AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme mit PostMessage(WM_KEYDOWN)

Ein Thema von Periander · begonnen am 27. Sep 2006 · letzter Beitrag vom 30. Sep 2006
Antwort Antwort
Seite 1 von 2  1 2      
Periander

Registriert seit: 27. Sep 2006
16 Beiträge
 
#1

Probleme mit PostMessage(WM_KEYDOWN)

  Alt 27. Sep 2006, 18:53
Hallo ich habe folgendes Problem:
Ich will ein Programm schreiben, dass die ausgewählte Taste einem beliebigen andern Programm simuliert. Dazu habe ich eine Combobox eingerichtet, in der man die Tasten wählen kann.
Dieses erkennt dann das Programm:

Delphi-Quellcode:
 ch := ar[i].var1;
     Case ch of

           0 :begin c:=vk_F1; end;
           1 :begin c:=vk_F2; end;
           2 :begin c:=vk_F3; end;
           3 :begin c:=vk_F4; end;
                    (...)
           26 :begin c:=Ord('a'); end;
           27 :begin c:=Ord('b'); end;
           28 :begin c:=Ord('c'); end;
                    (...)
und soll diese dann simulieren:
Delphi-Quellcode:
       if ar[i].var1 < 26 then
       begin
       PostMessage(w,WM_KEYDOWN,c,1);
       pause(ar[i].zeit,i);
       PostMessage(w,WM_KEYUP,c,1);
       end;
       if ar[i].var1 > 25 then
       begin
       PostMessage(w,WM_KEYDOWN,c,0);
       pause(ar[i].zeit,i);
       PostMessage(w,WM_KEYUP,c,0);
       end;
Das klappt soweit mit allen "vk_" tasten auch wunderbar, allerdings funktioniert es mit den chars nicht! Ich habe schon soviel ausprobiert...

Ich hoffe ihr könnt mir weiterhelfen.
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#2

Re: Probleme mit PostMessage(WM_KEYDOWN)

  Alt 27. Sep 2006, 19:13
Hallo,

ich würde vermuten, Du musst Großbuchstaben senden (65 = A, 66 = B usw.). Ob ein Großbuchstabe oder ein Kleinbuchstabe gemeint ist, hängt ja vom Status der Shifttaste ab. Und die sendet ebenfalls ein KEYDOWN/KEYUP-Paar.

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Periander

Registriert seit: 27. Sep 2006
16 Beiträge
 
#3

Re: Probleme mit PostMessage(WM_KEYDOWN)

  Alt 27. Sep 2006, 20:08
Danke für dir schnelle antwort.

du meinst, sowas hier: (ohne die Variable)

Delphi-Quellcode:
       begin
       PostMessage(w,WM_KEYDOWN,66,0);
       pause(ar[i].zeit,i);
       PostMessage(w,WM_KEYUP,66,0);
       end;
Das funktioniert nicht, oder wie genau meinst du das?
Verzeiht, wenn mir teilweise Grundkenntnisse fehlen.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Probleme mit PostMessage(WM_KEYDOWN)

  Alt 27. Sep 2006, 20:13
bei der Keymessage bekommst du (soweit ich mich erinnere) nicht das Zeischen sondern die Taste. Du musst zu der Taste also auch noch weitere Dinge mit schicken (Keydown, keydown-count etc.)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Probleme mit PostMessage(WM_KEYDOWN)

  Alt 27. Sep 2006, 21:49
Moin Periander,

erst einmal herzlich willkommen hier in der Delphi-PRAXiS.

Bei WM_KEYDOWN kann der letzte Wert 0 sein, bei WM_KEYUP solltest Du aber mindestens $C0000000 für lParam angeben.
(siehe MSDN-Library durchsuchenWM_KEYUP)
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Periander

Registriert seit: 27. Sep 2006
16 Beiträge
 
#6

Re: Probleme mit PostMessage(WM_KEYDOWN)

  Alt 30. Sep 2006, 08:57
Hmm... leider hat nichts davon funktioniert.

Könntet ihr vielleicht einen Beispielcode posten, der mit der PostMessage einen Buchstaben schickt? Ich habe die Vorahnung, dass ich etwas ganz kleines falsch mache.

Danke
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Probleme mit PostMessage(WM_KEYDOWN)

  Alt 30. Sep 2006, 08:59
für Buchstaben kannst du übrigens wm_char nehmen.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Periander

Registriert seit: 27. Sep 2006
16 Beiträge
 
#8

Re: Probleme mit PostMessage(WM_KEYDOWN)

  Alt 30. Sep 2006, 09:41
also folgendes funktioniert jetzt:

postmessage(form2.Efname.Handle, wm_char, ord('\'), 0); will ich das zeichen aber an ein anderes fenster schicken, mit:

Delphi-Quellcode:
w := FindWindow(NIL,('Name des Fensters'));

sendmessage(w,wm_char,ord('\'),0);
geht es nichtmehr (auch nicht mit postmessage)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#9

Re: Probleme mit PostMessage(WM_KEYDOWN)

  Alt 30. Sep 2006, 10:05
Zitat von Periander:
also folgendes funktioniert jetzt:

postmessage(form2.Efname.Handle, wm_char, ord('\'), 0); will ich das zeichen aber an ein anderes fenster schicken, mit:

Delphi-Quellcode:
w := FindWindow(NIL,('Name des Fensters'));

sendmessage(w,wm_char,ord('\'),0);
geht es nichtmehr (auch nicht mit postmessage)
Ich denke das Sendmessage nicht die geeignete API dafür ist.
Versuchs mal mit SendKeys

SendKeys('{ENTER}', True)
Simuliert den druck auf die Enter Taste und sendet sie an die andere anwendung

Alternativ ginge dies vielleicht auch noch.
SendMessageByNum(hWnd, WM_CHAR, 13, 0) 13 ist das ASC zeichen für ENTER.

Text wird so gesendet
SendMessageByString(hWnd, WM_SETTEXT, 0, '\')


gruß
  Mit Zitat antworten Zitat
Periander

Registriert seit: 27. Sep 2006
16 Beiträge
 
#10

Re: Probleme mit PostMessage(WM_KEYDOWN)

  Alt 30. Sep 2006, 10:39
was für "uses" brauche ich dafür?
Er erkennt diese art von API nicht.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz