控制台怎么写托盘程序( 五 )


thread.sleep(100); intptr windowhandle = findwindow(null, title); intptr closemenu = getsystemmenu(windowhandle, intptr.zero); uint sc_close =0xf060; removemenu(closemenu, sc_close, 0x0); } publicstaticbool isexistsconsole(string title) { intptr windowhandle = findwindow(null, title); if (windowhandle.equals(intptr.zero)) returnfalse; returntrue; }#endregion#region 托盘图标 static notifyicon _notifyicon =new notifyicon(); publicstaticvoid shownotifyicon() { _notifyicon.visible =true; _notifyicon.showballoontip(3000, "", "我是托盘图标,用右键点击我试试,还可以双击看看 。
", tooltipicon.none); } publicstaticvoid hidenotifyicon() { _notifyicon.visible =false; }#endregion } } 。
6.隐藏到我的托盘 1.23怎么用节省任务栏空间,应对老板突击检查 。
程序启动后会在当前活动窗口标题栏中间添加一个“隐”字按钮(用户可修改按钮显示文字),单击此按钮即可将当前活动窗口缩至本程序托盘菜单(请注意:被隐窗口标题成为托盘菜单中的一项,而不是将其图标缩至任务栏) 。您还可以使用热键隐藏当前活动窗口,默认隐藏热键为Ctrl+Alt+h(用户可另行设置) 。
鼠标右键单击程序托盘图标,在其菜单项中找到想要恢复的窗口名称单击即可 。您还可以使用热键无限次恢复被缩至托盘菜单的窗口,默认解藏热键为Ctrl+Alt+u(用户可另行设置) 。
鼠标右键单击程序托盘图标,单击托盘菜单项中的“释放所有”可以恢复所有被隐藏的窗口 。用户可以隐藏程序在任务栏的图标使程序的隐藏功能更强大 。
默认的隐藏/显示托盘图标的热键为Ctrl+Alt+t(用户可另行设置) 。可使用程序目录下“设热键.exe”另行设置热键,也可手动编辑程序目录下“隐藏到我的托盘.ini” 。
可以隐藏 。您可以通过右键单击程序托盘图标-总控制台-按钮来隐藏或显示此功能按钮 。
可以通过右键单击程序托盘图标-总控制台-设置-设置按钮文字或者通过右键单击程序托盘图标-总控制台-设置-直接编辑配置来修改之 。
7.C++控制台程序怎样使主函数无限循环for(;;)和while(TRUE)都是无限循环,只有break或者return跳出
PeekMessage不会阻塞,最后一个参数传PM_NOREMOVE,不会将消息从队列取出,可以用于检测消息队列是否有消息 。有时候,当我们使用全局变量之类的方式进行线程间交互,PeekMessage很有用 。
比如你用一个全局变量BOOL bStop表示线程是否停止,主线程bStop设为TRUE就是通知工作线程结束
if(PeekMessage(&iMsg,NULL,0,0,PM_NOREMOVE))
{
if(!GetMessage(&iMsg,NULL,0,0))
return iMsg.wParam;
TranslateMessage(&iMsg);
DispatchMessage(&iMsg);
}
else
{
if (bStop)
break;/*结束*/
}
追问:
我有一个程序是多线程,采用win32控制台程序编写,通过scoket对端口进行监听 。
但是为了将程序最小化到托盘,采用了消息循环,但是不知道如何将监听的代码放到循环里,所以增加了一个线程专门用来监听 。有没有更好的解决办法?
另外,消息循环放在主线程,对端口监听放在另一个线程里 。采用上面哪个消息循环好 。采用消息循环的目的是为了将窗口托盘化 。
追答:
一般来说,你这种情况,主线程是界面线程,处理界面消息的,工作线程只用于网络相关操作,你的问题只在于主线程,如何能够响应界面上点了最小化按钮,是吧?
GetMessage后,取出了消息保存在iMsg中,DispatchMessage(&iMsg);会根据iMsg结构体保存的窗口句柄,去掉用对应的窗口消息处理函数,这个回调函数应该是你在注册窗口类时定义了的 。在这个函数中,处理最小化消息 。