Hallo, ich habe folgendes Problem:
Ich versuche das Programm ACDSee (Bilderverwaltung) fernzusteuern. Der Zweck ist das automatische Erstellen von Snapshots von Videos (für eine Filmdatenbank), was ACDSee ab Version 6 sehr schön kann.
Dazu muss ich ACDSee dazu bringen, in den richtigen Ordner zu navigieren. Mein aktueller Ansatz läuft über FindWindow und SendMessage:
Delphi-Quellcode:
handle:=FindWindow(
nil, pchar(Edit1.Text));
// in Edit1.Text steht der Fenstertitel
handle:=FindWindowEx(
handle, 0, '
Afx:00400000:0',
nil);
handle:=FindWindowEx(
handle, 0,
nil, '
ViewFilter');
handle:=FindWindowEx(
handle, 0, '
Afx:00400000:0:00000000:01100059:00000000',
nil);
handle:=FindWindowEx(
handle, 0, '
ComboBoxEx32',
nil);
handle:=FindWindowEx(
handle, 0, '
ComboBox',
nil);
handle:=FindWindowEx(
handle, 0, '
Edit',
nil);
SendMessage(
handle, WM_SETTEXT, 255, Integer(PChar('
C:\')));
SendMessage(
handle, WM_SETFOCUS, 0, 0);
SendMessage(
handle, WM_KEYDOWN, VK_RETURN, 0);
SendMessage(
handle, WM_KEYUP, VK_RETURN, 0);
Was passiert ist dass in der Adressleiste der aktuelle Pfad korrekt durch "C:\" ersetzt wird - nur navigiert ACDSee da nicht hin! Ich habe den ähnlichen Code zusammen mit dem Windows Explorer ausprobiert, und da geht es - irgendwas scheint bei ACDSee anders zu laufen. Wenn ich aber - nachdem ich mein Programm habe laufen lassen und in ACDSee die Adressleiste auf "C:\" steht - zu ACDSee umschalte und dann einfach so auf Enter drücke, dann geht's!
Ich habe auch versucht, VK_RETURN an diverse andere ACDSee-Handles zu schicken, außerdem habe ich WM_CHAR probiert und statt VK_RETURN auch mal #13 und #10 genommen. Alles ohne Erfolg.
Das ganze habe ich getestet mit ACDSee 5, 6, 8 und 9 (nachdem die komplette Struktur über die Versionen hinweg gleich geblieben ist, vermute ich auch mal, dass es in Version 7 auch nicht anders wäre...).
Mittlerweile bin ich mit meinem Latein am Ende (selbst ein verzweifelter Versuch, den "Öffnen"-Dialog fernzusteuern ist fehlgeschlagen und hat regelmäßig das Programm zum Absturz gebracht - einmal sogar ganz Windows. Seitdem lasse ich die Finger davon
).
Für Hinweise oder gar Lösungen wäre ich sehr dankbar!
Viele Grüße,
Christian
P.S.:
Hier habe ich ein ähnliches Problem gefunden, darüber bin ich auf das WM_SETFOCUS gekommen, ohne das der Code auch im Windows Explorer nicht funktioniert, aber weiter hat es leider auch nicht geholfen.