您的位置:首页 > 其它

一些有用的函数

2007-05-25 10:31 253 查看
1.memset(pBuffer,0,pBuffer->length); //初始化一段内存空间,初始值为0

2.sprintf(pBuffer,fomatString,...); //作用和printf差不多,不同的是输出到指定的缓存pBuffer中,而不是输出到DOS控制台。

3.sscanf(pBuffer,fomatString,...); //作用和scanf差不多,但是是将pBuffer缓存中的内容作为输入,按照格式输入到指定变量中

4.TEXT("字符串abc") //TEXT是个宏,加上它编译程序可以根据具体情况,将字符串处理成单字节和双字节(Unicode)

5.GetCurrentDirectory(buffer_length,pBuffer); //获得运行程序的当前路径,不包括文件名(如:C:/)

6. GetModuleFileName(AfxGetInstanceHandle(),sCurrentDirectory,sizeof(sCurrentDirectory));//获得当前运行程序的路径,包括可执行程序的文件名。(如:C:/debug/test.exe)

7.WinExec(cmdLine,SW_HIDE);//执行一条cmd命令

8.我想在VC中执行CMD命令。有如下要求:
1)不显示DOS黑窗口
2)要在命令执行完成后函数再返回。

我试了几个函数。都不能满足要求
1)system();这个函数可以在执行完命令后才返回。但是显示黑窗口
2)WinExec ShellExecute CreateProcess这三个都能不显示黑窗口。但是执行命令后就返回了。没管命令执行成功与否。

解决第二个问题可以使用:

PROCESS_INFORMATION pi;
CreateProcess(..., &pi);
WaitForSingleObject(pi.hProcess, INFINITE);//关键在这里,等待子进程执行完。

9.获得当前进程关联的桌面名称

桌面名称在进程的启动信息里,启动信息存放在数据结构STARTUPINFO中,这里要获得该结构并从中得到桌面名称

VOID GetStartupInfo(LPSTARTUPINFO lpStartupInfo);

lpStartupInfo->lpDesktop字符串内容就是桌面的名字。一般的默认桌面名字“WinSta0/Default”。

示例代码如下:


STARTUPINFO startupInfo;


GetStartupInfo(&startupInfo );


printf("Desktop Name is %s ",startupInfo.lpDesktop);

10.获得进程的当前目录 GetFullPathName

/*例如:要获得驱动器C的当前目录,可以像下面这样*/


TCHAR szCurDir[MAX_PATH];


DWORD GetFullPathName(TEXT("C:"),MAX_PATH,szCurDir,NULL);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: