各位大侠:
我有一个EXE程序,运行时窗口是隐藏的(通过“任务管理器”中的“应用程序”也看不到),
请问如何在另外一个EXE中给它发消息?
即使用SendMessage(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)时,hWnd如何获得?在线等待,谢谢!
我有一个EXE程序,运行时窗口是隐藏的(通过“任务管理器”中的“应用程序”也看不到),
请问如何在另外一个EXE中给它发消息?
即使用SendMessage(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)时,hWnd如何获得?在线等待,谢谢!
我把窗口设为显示时,用FindowWindow可以找到,但把窗口设为隐藏后,用FindWindow就找不到了,窗口标题是没错的,
用法:HWND hWnd = ::FindWindow(NULL, L"Form1");
谢谢!
这个类CMainWindowIterator和这个函数GetWindowText或许对你会有帮助,建议Google一下!
sorry,没有用FindWindow搜索过隐藏窗口,查了一下发觉FindWindow是错的,找不到隐藏的。
HWND g_hwnd;BOOL CALLBACK EnumWindowsProc(HWND hWnd,LPARAM lParam)
{
char temp1[255];
GetWindowTextA(hWnd,temp1,255);//获得窗口标题 if(strcmp(temp1,"Form1") == 0)
{
g_hwnd=hWnd;
return true;
}
} EnumWindows(EnumWindowsProc,0); //得到所有窗口列表
这个代码我刚写的,保证能用。
或者麻烦点枚举桌面窗口
楼主不妨试试查找进程,通过进程是可以找到的。
我的EXE程序不是一般的只将窗口设为隐藏,此EXE是C#写的,隐藏的方法为:
//hide main window
protected override void SetVisibleCore(bool value)
{
base.SetVisibleCore(false);
}
,程序运行时,任务管理器里面只能看到进程,或许只能通过找进程的方法了。
请问如何将窗口句柄传给其它EXE,用共享内存吗?
=============
问题是进程和窗口并不存在一一对应的关系,你找到进程之后,如果获取这个进程所属窗口的句柄呢?不管你用什么方法进行窗口隐藏,EnumWindows都是能枚举到窗口的。