为什么不能激活

wangli1000000 2014-02-10 12:34:56
#include <windows.h>


int main(void)

{
char str1[]="E:\\飞机\\帮助.exe";
ShellExecute(NULL,"open",str1,NULL,NULL,SW_HIDE);
Sleep(100);

HWND hOut=FindWindow(NULL,str1);
SetActiveWindow(hOut);
ShowWindow(hOut,SW_SHOW);
//if(hOut!=0)PostMessage(hOut,WM_CLOSE,0,0);
return 0;
}


如上代码: 隐藏调用外部程序 "E:\\飞机\\帮助.exe",能关闭,却不能激活。
各位,帮帮忙,谢了。
...全文
108 点赞 收藏 8
写回复
8 条回复
赵4老师 2014年02月10日
请检查每个函数的返回值。
回复 点赞
MARIOV 2014年02月10日
路径名对么,可以改成英文的或者换个位置试试
回复 点赞
xiaohuh421 2014年02月10日
FindWindow(NULL,str1); 你确定这里查找到了吗? 新开的窗口的名字, 你确定是路径名吗?
回复 点赞
wangli1000000 2014年02月10日
引用 4 楼 zhao4zhong1 的回复:
请检查每个函数的返回值。
#include <windows.h> int main(void) { char str1[]="E:\\飞机\\帮助.exe"; ShellExecute(NULL,"open",str1,NULL,NULL,SW_HIDE); Sleep(100); HWND hOut=FindWindow(NULL,str1); printf("%d",hOut); int h; h=ShowWindow(hOut,SW_SHOWNORMAL); printf("\n%d",h); HWND hOut1; hOut1=SetActiveWindow(hOut); printf("\n%d",hOut1); SetForegroundWindow(hOut); getch(); if(hOut!=0)PostMessage(hOut,WM_CLOSE,0,0); return 0; } SetActiveWindow(hOut); 函数返回为0,说明没有激活。 现在问题已经搞定,用 SetForegroundWindow(HWND hOut) 函数。
回复 点赞
wangli1000000 2014年02月10日
引用 2 楼 xiaohuh421 的回复:
FindWindow(NULL,str1); 你确定这里查找到了吗? 新开的窗口的名字, 你确定是路径名吗?
能显示 关闭,说明已经找到了。 问题已经搞定,用 SetForegroundWindow(HWND hOut) 函数。
回复 点赞
wangli1000000 2014年02月10日
引用 1 楼 derekrose 的回复:
能关闭是什么意思
就是能执行 PostMessage(hOut,WM_CLOSE,0,0);
回复 点赞
buyong 2014年02月10日
SW_SHOWNORMAL
回复 点赞
yiyefangzhou24 2014年02月10日
ShellExecute(NULL,"open",str1,NULL,NULL,SW_SHOWNORMAL);不就完了
回复 点赞
derekrose 2014年02月10日
能关闭是什么意思
回复 点赞
发动态
发帖子
C语言
创建于2007-09-28

3.2w+

社区成员

24.0w+

社区内容

C语言相关问题讨论
社区公告
暂无公告