Einzelnen Beitrag anzeigen

hboy

Registriert seit: 16. Jan 2004
364 Beiträge
 
#9

Re: Media Schältflächen wie?

  Alt 3. Feb 2004, 18:04
Zitat von hacker:
Hi!

Wie kriege ich denn so ein Handle auf die Taskleistenschaltfläche??


Gruss Häcki
hehe hab dem gutt lösung (bin da au selber dran*ggg*)

Delphi-Quellcode:
type TBChildAttr = string[255];
const
  task_Button : TBChildAttr = 'Button';
  task_TrayNotifyWnd : TBChildAttr = 'TrayNotifyWnd';
  task_TrayClockWClass : TBChildAttr = 'TrayClockWClass';
  task_ToolbarWindow32 : TBChildAttr = 'ToolbarWindow32';
  task_ReBarWindow32 : TBChildAttr = 'ReBarWindow32';
  task_MSTaskSwWClass : TBChildAttr = 'MSTaskSwWClass';
  task_SysTabControl32 : TBChildAttr = 'SysTabControl32';

type TEnumRec = record
  Clienthandle: HWND;
  DestHandle: HWND;
  TBChild:TBChildAttr;
end;
type PEnumRec = ^TEnumRec;

procedure AttatchToTaskBar(const ChildAttr:TBChildAttr;WindowHandle: HWND);
var
  taskbarhandle: HWND;
  EnumRecord: PEnumRec;

  function TaskBarEnumChildProc(const AhWindow : DWORD;const EnumRec: PEnumRec) : Boolean; stdcall;
  var
    buf: PAnsiChar;
  begin
    getmem(buf,256);
    ZeroMemory(buf,length(buf));
    GetClassName(ahwindow,buf,256);
    if buf = EnumRec^.TBChild then EnumRec^.DestHandle := AhWindow;
    freemem(buf,256);
    result := true;
  end;

begin
  getmem(EnumRecord,SizeOf(TEnumRec));
  EnumRecord.TBChild := ChildAttr;
  EnumRecord.Clienthandle := WindowHandle;
  EnumRecord.DestHandle :=0;
  taskbarhandle:= FindWindow('Shell_TrayWnd', nil);
  EnumChildWindows(taskbarhandle,@TaskBarEnumChildProc,Integer(EnumRecord));
  if EnumRecord.DestHandle <> 0 then SetParent(EnumRecord.Clienthandle,EnumRecord.DestHandle);
  freemem(EnumRecord,SizeOf(TEnumRec));
end;
Power is nothing without TControl
  Mit Zitat antworten Zitat