编程实现调出'运行'窗口
上码
//显示运行窗口 void ShowRunDlg( HWND hParentWnd=NULL, //父窗口句柄 LPCWSTR lpszTitle=NULL, //标题 LPCWSTR lpszDes=NULL, //说明文字 HICON hIcon=NULL //指定图标 ) { //父窗口句柄,图标,一个未知路径,窗口标题,说明文字,未知(跟踪显示为0x14或0x4) typedef DWORD (WINAPI *LPRUNDLG)( HWND, HICON, LPCWSTR, LPCWSTR, LPCWSTR, DWORD); LPRUNDLG RunDlg; HMODULE hMod =::LoadLibrary("shell32.dll"); if (hMod) { HWND hSBWnd=NULL; if (!hParentWnd) { //如果父窗口句柄为NULL,则先取得状态栏的句柄,防止运行窗口在左上角 //hParentWnd=::FindWindowA("Shell_TrayWnd",NULL); //上面一招不太灵,显示运行窗口时,任务栏变成不可用了=,= //这里自己创建个窗口出来给他当父窗口-位置是左下角 //跟踪发现explorer调用运行命令时 也是创建了一个类名为Static的隐藏窗口给他当父窗口用(XP下) hSBWnd = CreateWindowA("Static", NULL, NULL,-500,3000,1,1, NULL, NULL,(HINSTANCE)::GetModuleHandleA(NULL), NULL); hParentWnd=hSBWnd; } RunDlg = (LPRUNDLG)GetProcAddress( hMod, MAKEINTRESOURCE(61) ); DWORD dwResult=RunDlg( hParentWnd, hIcon,NULL,lpszTitle, lpszDes, 4); FreeLibrary( hMod ); if (hSBWnd) ::DestroyWindow(hSBWnd); } } BOOL CRunApp::InitInstance() { CWinApp::InitInstance(); HICON hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); ShowRunDlg(NULL,L"运行",NULL,hIcon); ::DestroyIcon(hIcon); return FALSE; }
这下好了,滚轮往左一摇就可以调出运行了