写了一个WIN32控制台程序,该程序里调用GetCommandLineA() 获取当前进程的命令行,
可是在CMD下运行该程序时切换到当前进程的前几级目录下,然后输入该程序的相对路径名,去到的命令行是带相对路径,如何获取该进程的绝对路径呢?
我目前想到的解决方法:用GetCommandLineA() 获取命令行 判断如果是绝对路径则取到绝对路径进程退出; 如果判断是非绝对路径则调用GetCurrentDirectoryA 获取当前路径,然后把GetCommandLineA返回的结果字符串追加到当前路径后面则获取到,
请问:
1.还有什么其他方式么?有WIN32现成的API么?
2.由于控制台程序要开机自动运行,如何将控制台程序启动时自动进入后台执行类似LINUX下DAEMON进程那样?
可是在CMD下运行该程序时切换到当前进程的前几级目录下,然后输入该程序的相对路径名,去到的命令行是带相对路径,如何获取该进程的绝对路径呢?
我目前想到的解决方法:用GetCommandLineA() 获取命令行 判断如果是绝对路径则取到绝对路径进程退出; 如果判断是非绝对路径则调用GetCurrentDirectoryA 获取当前路径,然后把GetCommandLineA返回的结果字符串追加到当前路径后面则获取到,
请问:
1.还有什么其他方式么?有WIN32现成的API么?
2.由于控制台程序要开机自动运行,如何将控制台程序启动时自动进入后台执行类似LINUX下DAEMON进程那样?
解决方案 »
- VC++之删除目录中同一类型(后缀)文件??
- combobox添加下拉项的问题
- 如何实现跟随鼠标的那个小跟踪菜单来实时显示坐标
- [求助]如何得到当前窗口类指针。我在一个全局函数里,不能用this指针。(在线结帖)
- 高手又要多分的进来看看!!!
- 请问2000安装盘自带的工具包(support/tools)如何使用?直接安装就可以了吗?
- 谁能具体讲一讲用InstallShield制作安装程序?
- 生成预览功能?
- 三个月没来,账号依旧在。公开A10战机源代码,庆贺一下。
- Socket错误号(WSAGetLastError()得到)怎么找到相应的错误内容?
- 难道CSDN的高手都不在了??这样一个算法都没人能解?
- 为什么执行完文件打开操作后,关闭主窗口时会报错?
::GetModuleFileName(NULL, buf, MAX_PATH);
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run下,机器重新启动后我的程序自动运行后还是会显示控制台窗口,添加注册表代码如下:
HKEY hkey;
RegOpenKeyA(HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Run", &hkey);
RegSetValueExA(hkey, "testkey", 0, REG_SZ, "绝对路径\\mytest.exe", strlen(""绝对路径\\mytest.exe""));
RegCloseKey(hkey);
请问如何不显示控制台窗口呢?
面是一个MSDN中的小例子,用的是createprocess
void main( VOID )
{
STARTUPINFO si;
PROCESS_INFORMATION pi; ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) ); // 创建子进程
if( !CreateProcess( NULL, // No module name (use command line).
"MyChildProcess", // Command line.
NULL, // Process handle not inheritable.
NULL, // Thread handle not inheritable.
FALSE, // Set handle inheritance to FALSE.
0, // No creation flags.
NULL, // Use parent's environment block.
NULL, // Use parent's starting directory.
&si, // Pointer to STARTUPINFO structure.
&pi ) // Pointer to PROCESS_INFORMATION structure.
)
{
ErrorExit( "CreateProcess failed." );
} }