Laden...

SendKeys() und Adobe Reader Problem

Erstellt von blackdns vor 10 Jahren Letzter Beitrag vor 10 Jahren 2.235 Views
B
blackdns Themenstarter:in
11 Beiträge seit 2013
vor 10 Jahren
SendKeys() und Adobe Reader Problem

Hallo zusammen,

ich habe eine Anwendung, die an den geöffneten Adobe Reader die Tastenkombination zum Einblenden der erweiterten Suche sendet.

Bei vielen Rechnern funktioniert das auch ohne Probleme, bei einigen jedoch wird der Prozess zwar gestartet, die "Tastatureingabe" hingegen scheint nicht ausgeführt zu werden.

Der Code ist wie folgt:

Process prc = Process.Start(prcInfo);
SetForegroundWindow(prc.MainWindowHandle);
prc.WaitForInputIdle();
SendKeys.SendWait("^+F");
SendKeys.SendWait(txt_Searchvalue.Text);
SendKeys.SendWait("~");
prc.WaitForExit();

Hat jemand einmal etwas ähnliches gehabt oder vielleicht eine Idee, woran es liegen könnte? Es erscheint auch keine Fehlermeldung oder etwas ähnliches, es wird lediglich kein Suchfenster geöffnet.

Vielen Dank im Voraus.

4.931 Beiträge seit 2008
vor 10 Jahren

Hallo,

schon mal in die Hilfe zu MainWindowHandle bzw. WaitForInputIdle geschaut?
Du hast die falsche Reihenfolge verwendet, also


prc.WaitForInputIdle();
SetForegroundWindow(prc.MainWindowHandle);

macht wohl mehr Sinn.

B
blackdns Themenstarter:in
11 Beiträge seit 2013
vor 10 Jahren

hallo,

wenn ich deine anpassung vornehme, funktioniert es an keinem rechner mehr.

ich habe noch eine 2. variante gefunden (http://inputsimulator.codeplex.com/), bei dieser tritt der identische "fehler" auf, wie bei der bisher verwendeten, an den selben computern funktioniert es weiterhin, und an den anderen funktioniert es nach wie vor nicht, das problem kann also nach meinem verständnis nicht an der vorgehensweise liegen, sondern es muss ein problem außerhalb der software vorliegen.

S
269 Beiträge seit 2010
vor 10 Jahren

Hallo blackdns,

hast du auch schon einmal probiert, ob keybd_event (via P/Invoke) funktioniert?
Informationen zur Nutzung findest du hier: keybd_event (coredll) auf pinvoke.net

L
416 Beiträge seit 2008
vor 10 Jahren

Haben denn die PCs an denen es nicht funktioniert irgendwas gemeinsam? (OS Version, Adobe Version, ...)
Und worin unterscheiden sie sich von denen bei denen es funktioniert?

B
blackdns Themenstarter:in
11 Beiträge seit 2013
vor 10 Jahren

hallo karill,

diese software scheint nur für mobile endgeräte zu sein?! meine software ist desktop-basiert.

hallo lennart,

die rechner sind auf den ersten blick alle "identisch"
windows 7 sp1 64bit, adobe reader 11 (latest), aktuellstes .net framework (4.5) und vollständig durch-gepatcht

welche anderen faktoren könnten eine rolle spielen?

es handelt sich hier um ein wpf-projekt basierend auf .net 4.5, wenn ich es richtig verstehe, sollte die anwendung entsprechend auf einem pc, der eine ältere version von .net benutzt, garnicht starten - eine wie oben erläuterte arbeitsweise ist kein indiz für einen versionskonflikt der .net-versionen, ist das korrekt?

L
416 Beiträge seit 2008
vor 10 Jahren

Gemeint war wohl user32.keybd_event.

Selbst wenn auf einem PC mehrere verschiedene .Net FW Versionen installiert sind ist die in deinen Projekteigenschaften eingestellte Version entscheidend.
Mehr als über pinvoke zu gehn oder weiter nach Unterschieden zu suchen fällt mir jetzt leider auch nicht ein.

S
269 Beiträge seit 2010
vor 10 Jahren

Ah ich muss mich entschuldigen...
ja, gemeint war die keybd_event aus der user32.dll 😃

Ich hatte mich selbst gewundert, da ich mir schon vorher sicher war, dass keybd_event in der user32 steht... da ich aber in Eile war, hab ich dem ersten Vorschlag von pinvoke.net vertraut ohne auf die Details zu achten 😕

B
blackdns Themenstarter:in
11 Beiträge seit 2013
vor 10 Jahren

nicht schlimm 😃

habe jetzt aber herausgefunden, dass der "Geschützte Modus" des Adobe Readers (vgl. Anhang) mir einen Strich durch die Rechnung gemacht hat!
der scheint offenbar dafür zu sorgen, dass die tastatureingaben nicht ankommen.

falls es jmd programmatisch deaktivieren möchte:

Registry.SetValue("HKEY_CURRENT_USER\Software\Adobe\Acrobat Reader\11.0\Privileged", "bProtectedMode", "0")