能力值:
( LV2,RANK:10 )
|
-
-
2 楼
分析一下子窗口有没有什么特征
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
一个封装好的程序,运行起来在最前端,上面只有两个功能按钮,软件在任务栏上面没有标题,获取不了窗口句柄,我想通过窗口句柄控制显示和隐藏,不知道也没有什么好办法
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
用Spy++先看看有没啥特征啊
|
能力值:
( LV5,RANK:70 )
|
-
-
5 楼
方法1:用一些查PE资源的软件分析上面的两个功能按钮,然后枚举桌面窗体,分析每一个窗体是否有这两个功能按钮;
方法2:枚举桌面窗体,用GetWindowThreadProcessId得到PID,然后用Snapshot根据PID得到进程名,比较进程名即可。
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
软件功能我是知道的,我只是想控制这个无标题窗体的显示和隐藏,我已经通过枚举得到程序的handle,但是不知道怎样通过handle得到无标题窗体的hwnd,或者直接有什么办法控制无标题窗体的隐藏和显示
|
能力值:
( LV5,RANK:70 )
|
-
-
7 楼
第2条说的很清楚了,GetWindowThreadProcessId得到PID,Snapshot得到PID,PID 相等说明是你要找的hwnd.
|
能力值:
( LV4,RANK:50 )
|
-
-
8 楼
是不是采用无标题 躲避反什么系统 然后不会用热键隐藏自己了- -
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
~~ 不可以通过类名么?
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
ImHolly 你好,能否给个简单的例子,许多方法我基本都尝试过了
|
能力值:
( LV5,RANK:70 )
|
-
-
11 楼
BOOL CALLBACK EnumWindowsProc(
HWND hwnd,
LPARAM lParam
)
{
LPDWORD lpdwProcessId;
GetWindowThreadProcessId(hWnd,lpdwProcessId);
CToolhelp thProcesses(TH32CS_SNAPPROCESS);
PROCESSENTRY32 pe={sizeof(pe)};
BOOL fOK=thProcesses.ProcessFirst(&pe);
for(;fOK;fOK=thProcesses.ProcessNext(&pe))
{
if(pe.th32ProcessID==lpdwProcessId)
{
::ShowWindow((HWND)hProcess,SW_HIDE);
CloseHandle(hProcess);
}
}
return true;
}
EnumWindows(EnumWindowsProc,0);
CToolhelp是Jeffery写的那个Snapshot的类,这个没有就自己写吧.
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
我用的方法与你的类似,编译过了,链接报错,谢谢楼上的,用你的方法试试
|
能力值:
( LV9,RANK:780 )
|
-
-
13 楼
遍历系统所有窗口,在回调函数里取得每个窗口相关程序的handle,与你取得的程序handle比较,相同就找到了窗口,隐藏或显示此窗口即可!
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
13楼的,遍历系统所有窗口,在回调函数里取得每个窗口相关程序的handle,与你取得的程序handle比较,相同就找到了窗口,隐藏或显示此窗口即可!,
只有handle怎么能控制窗体的显示隐藏,有没有hwnd,你有什么方法
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
感觉2楼说的很清楚
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
楼上的各位抛砖引玉,内容值得收藏!
|
能力值:
( LV5,RANK:70 )
|
-
-
17 楼
BOOL CALLBACK EnumWindowsProc(
HWND hwnd,
LPARAM lParam
)
{
DWORD dwProcessId;
CToolhelp thProcesses(TH32CS_SNAPPROCESS);
PROCESSENTRY32 pe={sizeof(pe)};
CString str="IEXPLORE.EXE"; //这里可以填上你要隐藏的程序名
BOOL fOK=thProcesses.ProcessFirst(&pe);
::GetWindowThreadProcessId(hwnd,&dwProcessId);
for(;fOK;fOK=thProcesses.ProcessNext(&pe))
{
if(pe.szExeFile==str && pe.th32ProcessID==dwProcessId)
{
::ShowWindow(hwnd,SW_HIDE);
break;
}
}
return TRUE;
}
void CHidewndDlg::OnButton1()
{
// TODO: Add your control notification handler code here
::EnumWindows(EnumWindowsProc,0);
} 上次给的代码是当时随手写的 ,这次代码测试过了,能用.
|
|
|