五维思考

学习要加,骄傲要减,机会要乘,懒惰要除。 http://www.5dthink.cn

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

其实只用一个API函数就能实现:ShowWindow(Application.Handle,SW_HIDE),今天看到另一种方法,利用ITaskbarList接口隐藏任务栏图标,缺点是ALT+TAB或最小化后又显示出来了,但这个方法可以引伸出其它应用。

 

  1. //uses ActiveX 
  2. type
  3.   ITaskbarList = interface(IUnknown)
  4.     ['{56FDF344-FD6D-11d0-958A-006097C9A090}']
  5.     procedure HrInit; safecall;
  6.     procedure AddTab(hWindow: HWND); safecall;
  7.     procedure DeleteTab(hWindow: HWND); safecall;
  8.     procedure ActivateTab(hWindow: HWND); safecall;
  9.     procedure SetActiveAlt(hWindow: HWND); safecall;
  10.   end;
  11. procedure TForm1.btn1Click(Sender: TObject);
  12. var
  13.   TaskbarList:ITaskbarList;
  14. const
  15.   CLSID_TaskbarList:TGUID='{56FDF344-FD6D-11d0-958A-006097C9A090}';
  16.   IID_ITaskbarList:TGUID='{602D4995-B13A-429b-A66E-1935E44F4317}';
  17. begin
  18.   CoCreateInstance(CLSID_TaskbarList,Nil,CLSCTX_INPROC_SERVER,IID_ITaskbarList,TaskbarList);
  19.   TaskbarList.HrInit();
  20.   TaskbarList.DeleteTab(Application.Handle);
  21. end;

还有一种方法:
ExtendedStyle := GetWindowLong (Application.Handle, GWL_EXSTYLE);
SetWindowLong(Application.Handle, GWL_EXSTYLE, ExtendedStyle OR WS_EX_TOOLWINDOW AND NOT WS_EX_APPWINDOW);

posted on 2008-10-28 20:57  五维思考  阅读(398)  评论(0编辑  收藏  举报

QQ群:1. 全栈码农【346906288】2. VBA/VSTO【2660245】