Autor Beitrag
omega123
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: Mi 04.09.02 15:46 
hi

habe ien prob mit einem handle

ich möchte eien text in ein richedit schicken. nur irgetnwie ist hier was falsch?? bitte um hilfe.

ausblenden volle Höhe 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:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
function FindWindowByTitle(WindowTitle: string): Hwnd;
var
  NextHandle: Hwnd;
  NextTitle: array[0..260] of char;
begin
  // Get the first window
  NextHandle := GetWindow(Application.Handle, GW_HWNDFIRST);
  while NextHandle > 0 do
  begin
    // retrieve its text
    GetWindowText(NextHandle, NextTitle, 255);
    if Pos(WindowTitle, StrPas(NextTitle)) <> 0 then
    begin
      Result := NextHandle;
      Exit; 
    end
    else 
      // Get the next window 
      NextHandle := GetWindow(NextHandle, GW_HWNDNEXT);
  end; 
  Result := 0; 
end;
function FindControlByNumber(hApp: HWND; ControlClassName: string; EditNr: Integer): HWND; 
var 
  i: Word;
  hEdit: HWND;
begin
  Result := 0;
  if not IsWindow(hApp) then Exit;
  for i := 0 to EditNr do
  begin
    hEdit := FindWindowEx(hApp, hEdit, PChar(ControlClassName), nil);
    if hEdit = 0 then Exit;
  end;
  Result := hEdit;
end;


procedure TForm1.Button1Click(Sender: TObject);
var
  hEdit,h: hwnd;
begin
  hEdit := FindWindowByTitle('test');
  if hEdit = 0 then
    h := FindControlByNumber(FindWindow('test', nil), 'Richedit', 0);
  if h <> 0 then
      SendMessage(h, WM_SETTEXT, 0, Integer(PChar('test')))
  else
    ShowMessage('not found.');
end;
tommie-lie
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 4373

Ubuntu 7.10 "Gutsy Gibbon"

BeitragVerfasst: Mi 04.09.02 19:42 
Was ist denn der Fehler?
Wenn er einen Laufzeitfehler meldet, dann tritt das bei mir auch auf.
Aber man solte schon eine Fehlerbeschreibung haben...

Tschüß
Thomas

_________________
Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk. - Dilbert
omega123 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: Mi 04.09.02 19:52 
sorry aber hab ich wohl im eifer des gefechtes vergessen.

wenn ich den button drücke, soll eigentlich etwas in das fremde richedit geschrieben werden, aber leider passiert dies nicht.
tommie-lie
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 4373

Ubuntu 7.10 "Gutsy Gibbon"

BeitragVerfasst: Do 05.09.02 15:15 
Aha.
Und Delphi meldet in seinem Debugger einen Zugriffsfehler?
Das gleiche habe ich auch.

Versuch mal den String als String fester Länge mit einer Länge von 100 zu machen. Das klappte bei mir aus irgendeinem Grund...

Tschüß
Thomas

_________________
Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk. - Dilbert
Moewe2
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Di 08.10.02 23:05 
Titel: FindWindow-Parameter
Du hast bei Findwindow immer erst den Fensternamen angegeben, aber ich denke es ist anders rum, erst der Fenster-Tap, dann der Name.
Aber generell weiß ich nicht, warum du so umständlich versuchst, ein Handle von einem Fenster zu bekommen, dessen Titel du kennst. Mach doch einfach so:
Handle:= Findwindow(nil,'Name des Fensters');

Oder irre ich mich da.
Cya, Moe

_________________
Baut keine Atomraketen!
Die alten sind doch noch garnicht aufgebraucht.
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 09.10.02 08:43 
Dann doch besser den Klassennamen nutzen.
Der Fenstertitel kann sich -aus welchen Gründen auch immer- ändern. Der Klassenname bleibt dagegen immer gleich. Und sprachunabhängig (deutsches Windows, englisches Windows ....) ist es auch noch.
Moewe2
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Mi 09.10.02 12:58 
Wo bekommt man denn den Klassennamen her?

_________________
Baut keine Atomraketen!
Die alten sind doch noch garnicht aufgebraucht.