Autor |
Beitrag |
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Di 24.07.07 15:01
Hi,
gibt es eine Möglichkeit, die Handles der Taskbareinträge auszulesen.
z.B. Handle des Startbuttons
Start-Button 1:
| h := FindWindowEx(FindWindow('Shell_TrayWnd', nil), 0, 'Button', nil); |
dies muss doch auch für normale Taskbareinträge möglich sein.
Thx
Xion
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
Lossy eX
      
Beiträge: 1048
Erhaltene Danke: 4
|
Verfasst: Di 24.07.07 15:27
Nicht direkt. Denn bei den TaskButtons handelt es sich nicht um richtige Buttons sondern um Tabs eines TabControls.
Aber schau dir mal die Fenster mit dem Winspector an. Dann solltest du alles nötige wissen um das Fenster finden zu können.
_________________ Nur die Menschheit ist arrogant genug, um zu glauben sie sei die einzige intelligente Lebensform im All. Wo nicht mal das nachhaltig bewiesen wurde.
|
|
Xion 
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Mi 25.07.07 15:26
Hi, danke, hat mir sehr geholfen.  Stehe hier momentan aber noch vor einem Problem. Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure HideTBEntry; var h: THandle; Nr: integer; A:integer; Item:TCItem; begin h := FindWindowEx(FindWindow('Shell_TrayWnd', nil), 0, 'ReBarWindow32', nil); h:=FindWindowEx(h,0,'MSTaskSwWClass',nil); h:=FindWindowEx(h,0,'SysTabControl32',nil);
Nr:=SendMessage(h,TCM_GETITEMCOUNT,0,0); Item:=SendMessage(h,TCM_GETITEM,1, Integer(@Item)); end; | Delphi kennt TCItem nicht, und ich habe auch nicht mehr als das von msdn: msdn2.microsoft.com/...ibrary/ms650940.aspx Und ich weiß auch nicht, wie ich dann pszText auslesen kann. Xion
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 25.07.07 18:26
CommCtrl einbinden und dann bitte dies lesen: www.delphipraxis.net...ommoncontrols32.html
|
|
Xion 
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Do 26.07.07 10:36
danke nur:  dein Programm zeigt bei mir nur eine "2" an  dieser Code liefert 'TEST' zurück, wobei alles mit True durchlaufen wird: 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39:
| h := FindWindowEx(FindWindow('Shell_TrayWnd', nil), 0, 'ReBarWindow32', nil); h:=FindWindowEx(h,0,'MSTaskSwWClass',nil); h:=FindWindowEx(h,0,'SysTabControl32',nil);
Nr:=SendMessage(h,TCM_GETITEMCOUNT,0,0);
ProcessId := 0; GetWindowThreadProcessId(h, @ProcessId); Process := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_OPERATION or PROCESS_VM_READ or PROCESS_VM_WRITE, False, ProcessId);
Size := SizeOf(TtcItem); MemLocal := VirtualAlloc(nil, Size, MEM_COMMIT, PAGE_READWRITE); MemRemote := VirtualAllocEx(Process, nil, Size, MEM_COMMIT, PAGE_READWRITE);
for A:= 0 to Nr do
begin
ZeroMemory(MemLocal, SizeOf(TtcItem));
MemLocal^.mask := TCIF_TEXT; MemLocal^.pszText := 'TEST'; MemLocal^.cchTextMax:=256;
NumBytes:=0; WriteProcessMemory(Process, MemRemote, MemLocal, Size, NumBytes); SendMessage(h, TCM_GETITEM, 0, integer(MemRemote)); ReadProcessMemory(Process, MemRemote, MemLocal, Size, NumBytes); ShowMessage(String(MemLocal^.pszText)); end; if Assigned(MemRemote) then VirtualFreeEx(Process, MemRemote, 0, MEM_RELEASE); if Assigned(MemLocal) then VirtualFree(MemLocal, 0, MEM_RELEASE); CloseHandle(Process); |  diese Funktion "TabCtrl_GetItem_Text"( websnap123.com/Look.asp?it=3264098) bricht nach SendMessage ab Xion // Die "Get_SysTabCtrl_WinText" funktioniert aber, ich versuch mal zu kapieren warum. Thx 
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
Xion 
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Fr 27.07.07 12:08
Hi, unter Win2k läuft alles sauber, doch unter WinXP geht nichts. Mit dem Winspector stellt sich heraus, dass es unter WinXP keinen TabControl mehr gibt, sonderen ein "ToolbarWindow32". Somit ist der ganze Code unbrauchbar, da es eigentlich unter WinXP laufen soll. Somit müsste ich erstmal rausfinden, wie ich die Toolbar auslese. Xion //ah, da hab ich was schönes dazu www.codeproject.com/...0&select=1127363
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
|