matbal hat geschrieben:Denke daran, daß es einige Millisekunden dauert, bis Notepad das Fenster erstellt hat.
Das war der entscheidende Hinweis ! Bei mir reicht ein einzelnes Delay(100), damit der hWnd korrekt befüllt ist.
Ich hatte verdrängt, dass auch meine bestehende Prozedur ProcID2hWnd() solange loopt, bis die ID ungleich 0 ist:
Code: Alles auswählen
Repeat
notepad_hWnd = ProcID2hWnd(notepadPID)
If notepad_hWnd : Break : EndIf
ForEver
Danke für den Hinweis !
Die Ermittlung des Windows Handles ist mit dem Code von ausen tatsächlich zuverlässig und reproduzierbar.Da ich mit ProcID2hWnd()
aber beim ersten Aufruf immer Erfolg habe und dann hWnd in eine Variable speichere, ist das für mich in diesem Fall nicht ganz so
wichtig, ob bei einem weiteren Aufruf der hWnd zuverlässig ermittelt würde.
Dein Code:
Code: Alles auswählen
hEdit = FindWindowEx_(Prog_hWnd, 0, "Edit", 0)
SendMessage_(hEdit,#EM_SETSEL, $fffffff, $fffffff)
SendMessage_(hEdit,#EM_REPLACESEL, 0, text$ + #CRLF$)
funktioniert...aber:
Der Text aus dem Editor wird ohne Linefeeds in das Notepad geklatscht, obwohl der Text welche enthält.
Das ist natürlich nicht im Sinne des Erfinders.
Die andere Variante macht es genauso, also kein Unterschied zu sehen:
Code: Alles auswählen
SendMessage_(GetDlgItem_(Prog_hWnd, 15),#EM_SETSEL, $fffffff, $fffffff)
SendMessage_(GetDlgItem_(Prog_hWnd, 15),#EM_REPLACESEL, 0, text$ + #CRLF$)
Somit fallen beide Varianten aus, da ich den Text natürlich so ins Notepad übernehmen will, wie er ist, also mit Zeilenvorschüben am Ende jeder Zeile.
Weitere Test auf dem anderen W7 System bezüglich Zuverlässigkeit habe ich mir dann auch gespart.
Bleibt also im Moment nur #WM_PASTE und SendKeys().Schade, die Lösung mit #EM_REPLACESEL wäre eigentlich genau das, wonach ich gesucht hab.
Am Window Handle kann es meiner Meinung nicht liegen, dass der Text auf dem anderen PC per #WM_PASTE manchmal / oft / meist nicht im Notepad erscheint,
da der Linefeed per SendKeys ins gleiche Window Handle stets funktioniert.Außerdem funktioniert es auf dem anderen PC ja nicht generell nicht, und da ich
den hWnd abspeichere nachdem notepad geöffnet wurde, ändert dieser sich nicht mehr, solange dieses notepad geöffnet bleibt.