请大侠们帮我看下程序代码,关于隐藏任务栏图标的程序

urmy1004 2010-12-14 04:36:28
那个LRM.exe是一个MFC程序

#include "shell.h"

PROCESS_INFORMATION pi;

BOOL CALLBACK MyEnumWndProc(HWND hwnd, LPARAM lparam)
{
DWORD ProcID;
DWORD ThreadID;
ThreadID = ::GetWindowThreadProcessId(hwnd, &ProcID);
printf("ProcID is : %l\n", ProcID); // the two are both "", why?
printf("pi.dwProcessId is : %l\n", pi.dwProcessId);
if(ProcID == pi.dwProcessId)
{
::ShowWindow(hwnd, SW_HIDE);
printf("Success!\n");
return FALSE;
}

return true;
}

int main()
{
char filePath[MAX_PATH];
char dirPath[MAX_PATH];

memset(filePath, 0, MAX_PATH);
memset(dirPath, 0, MAX_PATH);

strcpy(dirPath, "E:\\shell\\Release\\");
strcat(filePath, dirPath);
strcat(filePath, "LRM.exe");

// 必备参数设置
STARTUPINFO si;
memset(&si, 0, sizeof(STARTUPINFO));
si.cb = sizeof(STARTUPINFO);
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = SW_HIDE;
// 必备参数设置结束

CreateProcess(filePath,
NULL,
NULL,
NULL,
FALSE,
0,
NULL,
NULL,
&si,
&pi);

EnumWindows((WNDENUMPROC)MyEnumWndProc, NULL);
return 0;
}

不胜感激~~~
最后没有实现隐藏啊! LRM。exe的界面在,而且任务栏上面的图标也在,到底该怎么改啊?或者有没有别的实现方式呢??
...全文
130 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
urmy1004 2010-12-14
  • 打赏
  • 举报
回复

#include "shell.h"



/*
BOOL CALLBACK MyEnumWndProc(HWND hwnd, LPARAM lparam)
{
DWORD ProcID;
DWORD ThreadID;
ThreadID = ::GetWindowThreadProcessId(hwnd, &ProcID);
printf("ProcID is : %l\n", ProcID); // the two are both "", why?
printf("pi.dwProcessId is : %l\n", pi.dwProcessId);
if(ProcID == pi.dwProcessId)
{
::ShowWindow(hwnd, SW_HIDE);
printf("Success!\n");
return FALSE;
}

return true;
}*/

int main()
{
char filePath[MAX_PATH];
char dirPath[MAX_PATH];

memset(filePath, 0, MAX_PATH);
memset(dirPath, 0, MAX_PATH);

strcpy(dirPath, "E:\\shell\\Release\\");
strcat(filePath, dirPath);
strcat(filePath, "LRM.exe");

// 必备参数设置
STARTUPINFO si;
PROCESS_INFORMATION pi;
memset(&si, 0, sizeof(STARTUPINFO));
si.cb = sizeof(STARTUPINFO);
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = SW_HIDE;
// 必备参数设置结束

CreateProcess(filePath,
NULL,
NULL,
NULL,
FALSE,
0,
NULL,
NULL,
&si,
&pi);
Sleep(1000);
//EnumWindows((WNDENUMPROC)MyEnumWndProc, NULL);
HWND hwnd;
hwnd = ::FindWindow(NULL, _T("Hello!"));
if(hwnd == NULL)
::MessageBox(NULL, "NULL", "bad", MB_OK);
::ShowWindow(hwnd, SW_HIDE);
return 0;
}


OK了,因为没有加_T()的原因??
Eleven 2010-12-14
  • 打赏
  • 举报
回复
会闪一下吧
urmy1004 2010-12-14
  • 打赏
  • 举报
回复
是隐藏 LRM.exe,我本地却把本程序给隐藏了。。。。刚试验了
urmy1004 2010-12-14
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 djj315 的回复:]

vc6没问题,我验证了.
[/Quote]

哥!加我QQ吧,我把workspace发给你测一下

QQ:523489228
Simao 2010-12-14
  • 打赏
  • 举报
回复
vc6没问题,我验证了.
JimsdogV1 2010-12-14
  • 打赏
  • 举报
回复
windows下的话可以这样
//隐藏任务栏
HWND hWnd=::FindWindow(_T("HHTaskBar"),NULL);
while(hWnd==NULL)
{
hWnd = ::FindWindow(_T("HHTaskBar"),NULL);
Sleep(1000);
}
::ShowWindow(hWnd,SW_HIDE);
urmy1004 2010-12-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 happyparrot 的回复:]

有没有打印出Success呢?
[/Quote]

没有 那两个ID不知道为什么都是空的,之前我用findwindow()获取的时候那个hwnd也是空的。。。奇怪呢
urmy1004 2010-12-14
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 djj315 的回复:]

引用楼主 preetycai 的回复:
那个LRM.exe是一个MFC程序

C/C++ code

#include "shell.h"

PROCESS_INFORMATION pi;

BOOL CALLBACK MyEnumWndProc(HWND hwnd, LPARAM lparam)
{
DWORD ProcID;
DWORD ThreadID;
Thre……
[/Quote]

VC++ 6.0,我本地的还是不行啊,也没法跟踪调试啊,说是什么断点disabled,你用的什么编译器啊
Simao 2010-12-14
  • 打赏
  • 举报
回复
[Quote=引用楼主 preetycai 的回复:]
那个LRM.exe是一个MFC程序

C/C++ code

#include "shell.h"

PROCESS_INFORMATION pi;

BOOL CALLBACK MyEnumWndProc(HWND hwnd, LPARAM lparam)
{
DWORD ProcID;
DWORD ThreadID;
ThreadID = ::G……
[/Quote]
楼主,拿你的代码验证了,界面没有出现呢,至于图标的话要另外隐藏的,你用的什么编译器,你跟踪一下看出现啥错误了.
疯狂石头_ 2010-12-14
  • 打赏
  • 举报
回复
MFC程序好像没有处理SW_HIDE,win 32程序就可以了

EnumWindows((WNDENUMPROC)MyEnumWndProc, NULL);
这步可以不用写,因为CreateProcess已经指定窗口的显示模式了
快乐鹦鹉 2010-12-14
  • 打赏
  • 举报
回复
有没有打印出Success呢?
urmy1004 2010-12-14
  • 打赏
  • 举报
回复
之前获取窗体句柄为NULL,怪我没有讲清楚问题所在~~

经过我的试验,是编码的问题。。。。我只获取了一次,即通过调用FindWindow(NULL, _T("LRM")),第一次“LRM”是英文的,通过Spy++,我发现有两个caption为“LRM”的window!!另一个是日文编码的(LRM+日文)。。。
但是显示在windows title 和 VC++ 6.0里面的字符是一样的,均为"LRM"!

在此谢谢各位的回帖~~~ 我的积分不多,散给大家啦~
你想当“李逍遥”式的“大侠”吗? 这里无需计算机基础,无需编程经验,你也不必是计算机专业的在校大学生....只要爱好游戏,怀揣梦想! 有一定自主学习能力,跟着刘老师从“编程小白”修炼为游戏研发“大虾”吧!!!学习好Unity,其先决条件是一定要有稳固、扎实的编程基础!课程 《C# For Unity系列之入门篇》配套学习资料链接:http://pan.baidu.com/s/1gflxreN 密码:sou5;刘老师讲Unity学员群(2) 497429806一、热更新系列(技术含量:中高级):A:《lua热更新技术中级篇》https://edu.csdn.net/course/detail/27087B:《热更新框架设计之Xlua基础视频课程》https://edu.csdn.net/course/detail/27110C:《热更新框架设计之热更流程与热补丁技术》https://edu.csdn.net/course/detail/27118D:《热更新框架设计之客户端热更框架(上)》https://edu.csdn.net/course/detail/27132E:《热更新框架设计之客户端热更框架(中)》https://edu.csdn.net/course/detail/27135F:《热更新框架设计之客户端热更框架(下)》https://edu.csdn.net/course/detail/27136二:框架设计系列(技术含量:中级): A:《游戏UI界面框架设计系列视频课程》https://edu.csdn.net/course/detail/27142B:《Unity客户端框架设计PureMVC篇视频课程(上)》https://edu.csdn.net/course/detail/27172C:《Unity客户端框架设计PureMVC篇视频课程(下)》https://edu.csdn.net/course/detail/27173D:《AssetBundle框架设计_框架篇视频课程》https://edu.csdn.net/course/detail/27169三、Unity脚本从入门到精通(技术含量:初级)A:《C# For Unity系列之入门篇》https://edu.csdn.net/course/detail/4560B:《C# For Unity系列之基础篇》https://edu.csdn.net/course/detail/4595C: 《C# For Unity系列之中级篇》https://edu.csdn.net/course/detail/24422D:《C# For Unity系列之进阶篇》https://edu.csdn.net/course/detail/24465四、虚拟现实(VR)与增强现实(AR):(技术含量:初级)A:《虚拟现实之汽车仿真模拟系统 》https://edu.csdn.net/course/detail/26618五、Unity基础课程系列(技术含量:初级) A:《台球游戏与FlappyBirds—Unity快速入门系列视频课程(第1部)》 https://edu.csdn.net/course/detail/24643B:《太空射击与移动端发布技术-Unity快速入门系列视频课程(第2部)》https://edu.csdn.net/course/detail/24645 C:《Unity ECS(二) 小试牛刀》https://edu.csdn.net/course/detail/27096六、Unity ARPG课程(技术含量:初中级):A:《MMOARPG地下守护神_单机版实战视频课程(上部)》https://edu.csdn.net/course/detail/24965B:《MMOARPG地下守护神_单机版实战视频课程(中部)》https://edu.csdn.net/course/detail/24968C:《MMOARPG地下守护神_单机版实战视频课程(下部)》https://edu.csdn.net/course/detail/24979

15,978

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧