Sistem Menüsü
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Sistem Menüsü
Programın sol üst köşesindeki simgesine tıklanınca gelen menüyü nasıl kontrol edebiliriz?
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
Programın başlat çubuğundaki düğmesine sağ tıklanınca gelenen menü ile aynı olur düşüncesiyle ikisini birden sormamıştım. Verdiğin bağlantı programdaki menüyü anlatıyor. Güzel bi örnek. Teşekkürler.
Program çalışınca başlat çubuğunda oluşan program düğmesine sağ tıklanınca gelen menüyü nasıl kontrol edebilirim? Teşekkürler..
Adı görev çubuğu galiba.
Program çalışınca başlat çubuğunda oluşan program düğmesine sağ tıklanınca gelen menüyü nasıl kontrol edebilirim? Teşekkürler..
Adı görev çubuğu galiba.
görev çubuğundaki simgeye tıklayıncada aynı menu gelirki ?
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
genelde komutlar aynı.. çünkü menü aynı. ancak bazı durumlarda değişiyor neden formun yapısı ve uygulama console ise vs gibi durumlarda.
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
merhaba
Aşağıdaki kodları delphi.about.com adresinden buldum.
Bu bileşen delphi programının başlat çubuğundaki çerçevesi içerisinde mouse sağ tuşu ile açılan menünün seçeneklerini belirlemeyi sağlıyor.
Aşağıdaki kodları delphi.about.com adresinden buldum.
Bu bileşen delphi programının başlat çubuğundaki çerçevesi içerisinde mouse sağ tuşu ile açılan menünün seçeneklerini belirlemeyi sağlıyor.
Kod: Tümünü seç
//from Zarko Gajic
unit TaskBarMenu;
interface
uses
SysUtils, Classes, Menus, Messages, Windows, Forms, Controls;
type
TTaskBarMenu = class(TPopupMenu)
private
hookHandle : THandle;
oldWndProc: Pointer;
newWndProc: Pointer;
protected
procedure Hook;
procedure UnHook;
procedure AppWndProc(var Msg: TMessage) ;
public
constructor Create(AOwner: TComponent) ; override;
destructor Destroy; override;
end;
procedure Register;
implementation
const
WM_TASKBAR_MENU = $0313; // magic!
WM_POPUP_MENU = WM_USER + 1; //custom message
var
thisOnce : TTaskBarMenu = nil;
procedure Register;
begin
RegisterComponents('delphi.about.com', [TTaskBarMenu]) ;
end;
{ TTaskBarMenu }
procedure TTaskBarMenu.AppWndProc(var Msg: TMessage) ;
begin
case Msg.Msg of
WM_TASKBAR_MENU: PostMessage(hookHandle, WM_POPUP_MENU, 0, 0) ;
WM_POPUP_MENU: Popup(Mouse.CursorPos.X, Mouse.CursorPos.Y) ;
else
Msg.Result := CallWindowProc(oldWndProc, hookHandle, Msg.Msg, Msg.wParam, Msg.lParam) ;
end;
end; (*AppWndProc*)
constructor TTaskBarMenu.Create(AOwner: TComponent) ;
begin
if Assigned(thisOnce) then
begin
raise Exception.Create('Only one instance of this component can be used per application!') ;
end
else
begin
inherited;
thisOnce := self;
hookHandle := Application.Handle;
Hook;
end;
end; (*Create*)
destructor TTaskBarMenu.Destroy;
begin
thisOnce := nil;
UnHook;
inherited;
end; (*Destroy*)
procedure TTaskBarMenu.Hook;
begin
oldWndProc := Pointer(GetWindowLong(hookHandle, GWL_WNDPROC)) ;
newWndProc := Classes.MakeObjectInstance(AppWndProc) ;
if not (csDesigning in ComponentState) then SetWindowLong(hookHandle, GWL_WNDPROC, longint(newWndProc)) ;
end; (*Hook*)
procedure TTaskBarMenu.UnHook;
begin
SetWindowLong(hookHandle, GWL_WNDPROC, longint(oldWndProc)) ;
if Assigned(newWndProc) then Classes.FreeObjectInstance(newWndProc) ;
NewWndProc := nil;
end; (*UnHook*)
end.