各位朋友!我写的服务程序,注销之后界面就没了。

zhgwbzhd 2009-08-07 08:58:18
我用bcb6写了一个服务程序,带界面那种。
考虑到有些系统不是直接登陆的。所以我就在ServiceExecute中,有一个循环,判断 explorer是否启动,如果启动了就创建我的界面。

一次启动是没问题的。

但是发现,如果注销之后,再次登陆,我的服务程序没有变,但是托盘内的图表没了。


大家如何处理的这种事情??

谢谢各位!
...全文
113 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhgwbzhd 2009-08-10
  • 打赏
  • 举报
回复
哦。不知我理解的是否正确啊。

LRESULT CALLBACK WndProc(HWND hWnd,
UINT uMessage,
WPARAM wParam,
LPARAM lParam)
{
static UINT s_uTaskbarRestart;

switch(uMessage)
{
case WM_CREATE:
s_uTaskbarRestart = RegisterWindowMessage(TEXT("TaskbarCreated"));
break;

default:
if(uMessage == s_uTaskbarRestart)
TrayIcon->visible = true;
//AddTaskbarIcons();
break;
}

return DefWindowProc(hWnd, uMessage, wParam, lParam);
}

但是终止了exporler之后,再加载explorer之后,托盘内图表没出来。
Behard 2009-08-09
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 zhgwbzhd 的回复:]
5楼的弟兄。

目前我使用的是 TrayIcon 控件。

该如何处理这个问题呢??

谢谢啊!
[/Quote]

不是吧,代码已经写出来了呀
重载主窗口 WndProc 函数,函数如上,也就是接收 TaskbarCreated 消息
AddTaskbarIcons(); 就是重新显示 TrayIcon 的函数
zhgwbzhd 2009-08-09
  • 打赏
  • 举报
回复
恩,还好。我的界面里有一个定时器。

在定时器里,每次都执行一下 TrayIcon->visible = true。

这样由于终止 explorer,再加载explorer之后,就会把托盘显示。

不知还有没有更好的方法了。
zhgwbzhd 2009-08-09
  • 打赏
  • 举报
回复
5楼的弟兄。

目前我使用的是 TrayIcon 控件。

该如何处理这个问题呢??

谢谢啊!
Behard 2009-08-07
  • 打赏
  • 举报
回复
微软 MSDN 上面的帮助

LRESULT CALLBACK WndProc(HWND hWnd,
UINT uMessage,
WPARAM wParam,
LPARAM lParam)
{
static UINT s_uTaskbarRestart;

switch(uMessage)
{
case WM_CREATE:
s_uTaskbarRestart = RegisterWindowMessage(TEXT("TaskbarCreated"));
break;

default:
if(uMessage == s_uTaskbarRestart)
AddTaskbarIcons();
break;
}

return DefWindowProc(hWnd, uMessage, wParam, lParam);
}
zhgwbzhd 2009-08-07
  • 打赏
  • 举报
回复
是可以的。
但是注销之后就没了。

我用的是bcb自带的控件。

现在改成API,正在测试呢。
lghndyz 2009-08-07
  • 打赏
  • 举报
回复
可以做到隐藏在托盘的,上网找一下怎么做!!
zhgwbzhd 2009-08-07
  • 打赏
  • 举报
回复
哦,更正一下。
是托盘内的图表没了。

如果界面打开的状况,界面还是存在的。

如果界面是在隐藏的状态,也就不会显示了。

13,873

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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