Autor Beitrag
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
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)
BeitragVerfasst: Di 24.07.07 15:01 
Hi,

gibt es eine Möglichkeit, die Handles der Taskbareinträge auszulesen.

z.B. Handle des Startbuttons
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1048
Erhaltene Danke: 4



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
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)
BeitragVerfasst: Mi 25.07.07 15:26 
Hi,

danke, hat mir sehr geholfen. :zustimm: Stehe hier momentan aber noch vor einem Problem.

ausblenden 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



BeitragVerfasst: Mi 25.07.07 18:26 
CommCtrl einbinden und dann bitte dies lesen: www.delphipraxis.net...ommoncontrols32.html
Xion Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
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)
BeitragVerfasst: Do 26.07.07 10:36 
danke :D

nur:
:arrow: dein Programm zeigt bei mir nur eine "2" an
:arrow: dieser Code liefert 'TEST' zurück, wobei alles mit True durchlaufen wird:

ausblenden volle Höhe Delphi-Quelltext
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);
      // Prozess öffnen
      {True}Process := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_OPERATION or
        PROCESS_VM_READ or PROCESS_VM_WRITE, False, ProcessId);

      Size := SizeOf(TtcItem);
      {True}MemLocal := VirtualAlloc(nil, Size, MEM_COMMIT, PAGE_READWRITE);
      {True}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;
            {True}WriteProcessMemory(Process, MemRemote, MemLocal, Size, NumBytes); // Struktur in den Remoteprozess kopieren
            {True}SendMessage(h, TCM_GETITEM, 0, integer(MemRemote)); // Struktur im Remoteprozess füllen
            {True}ReadProcessMemory(Process, MemRemote, MemLocal, Size, NumBytes); // Struktur in die lokale Struktur kopieren
            ShowMessage(String(MemLocal^.pszText)); //=>'TEST'
        end;
      if Assigned(MemRemote) then
        VirtualFreeEx(Process, MemRemote, 0, MEM_RELEASE);
      if Assigned(MemLocal) then
        VirtualFree(MemLocal, 0, MEM_RELEASE);
      CloseHandle(Process);


:arrow: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
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)
BeitragVerfasst: 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)