explorer崩溃重启后,任务栏图标如何恢复?

easttt 2007-05-22 08:47:04
我试了http://www.ccrun.com/article.asp?i=577&d=v3lka2上所说的方法,不过explorer重启后说 无效的窗口句柄...不知道怎么解决该问题,请教各位高手
...全文
376 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
easttt 2007-05-24
  • 打赏
  • 举报
回复
CoolTrayIcon我试过了,是能解决这个问题得,不过关键CoolTrayIcon是Delphi的控件,好像没有BCB的版本吧?
constantine 2007-05-24
  • 打赏
  • 举报
回复
好像直接用cooltrayicon就可以了,印象中这个控件有处理这个问题
cczlp 2007-05-24
  • 打赏
  • 举报
回复
CB6就有这个问题,出错没关系,确定后一样用
hujun3027 2007-05-23
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/topic/5552/5552478.xml?temp=.5352899

哪位大虾能帮我看看阿,散分的!
loveshell 2007-05-23
  • 打赏
  • 举报
回复
#define WM_TASKBARCREATED 0x0000C060

protected:
#pragma option push -vi-
BEGIN_MESSAGE_MAP
VCL_MESSAGE_HANDLER(WM_TASKBARCREATED, TMessage, RestoreTrayIcon)
END_MESSAGE_MAP(TForm)
#pragma option pop


void __fastcall TfrmMain::RestoreTrayIcon(TMessage & msg)
{
//TODO: Add your source code here
this->TrayIconMOD->Visible = true;
}
loveshell 2007-05-23
  • 打赏
  • 举报
回复
搞错了 不是这段
loveshell 2007-05-23
  • 打赏
  • 举报
回复
const DWORD WM_RESTORE = WM_USER+1;
void __fastcall TForm1::WndProc(Messages::TMessage & Message)
{

TForm::WndProc(Message);
if(Message.Msg==WM_RESTORE)
{

if(IsIconic(Application->Handle))
{

Application->Restore();

}
else{
Application->BringToFront();
}
}
Waiting4you 2007-05-23
  • 打赏
  • 举报
回复
看看你执行这句的前后有没有其他代码影响它。我也用了这个代码,没有你这样的问题
Shell_NotifyIcon(NIM_ADD,&nid);
easttt 2007-05-23
  • 打赏
  • 举报
回复
结束explorer进程后,重启explorer,就会报错"System Error.code :1400.无效的窗口句柄."

我的代码如下,高手请指正

Uint1.h
//---------------------------------------------------------------------------

#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include "trayicon.h"
#include <Menus.hpp>
#include <ImgList.hpp>
#define WM_TASKBARCREATED 0x0000C060
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TTrayIcon *TrayIcon1;
TPopupMenu *PopupMenu1;
TMenuItem *N11;
TMenuItem *N21;
TImageList *ImageList1;
void __fastcall FormActivate(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);

void __fastcall RestoreTrayIcon(TMessage & msg);

protected:
#pragma option push -vi-
BEGIN_MESSAGE_MAP
VCL_MESSAGE_HANDLER(WM_TASKBARCREATED, TMessage, RestoreTrayIcon)
END_MESSAGE_MAP(TForm)
#pragma option pop
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif



Uint1.cpp
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "trayicon"
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormActivate(TObject *Sender)
{
Application->Minimize();
ShowWindow(Application->Handle,SW_HIDE);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::RestoreTrayIcon(TMessage &msg)
{
this->TrayIcon1->Visible = true;
}
easttt 2007-05-23
  • 打赏
  • 举报
回复
谢谢楼上的回答
不过这个方法我也试过了,仍然说是无效的窗口句柄...真晕呐

604

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder VCL组件使用和开发
社区管理员
  • VCL组件使用和开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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