WinFuture-Forum.de: Tastendruck Simulieren - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Tastendruck Simulieren C#


#1 Mitglied ist offline   DonElTomato 

  • Gruppe: aktive Mitglieder
  • Beiträge: 311
  • Beigetreten: 04. Oktober 05
  • Reputation: 0

geschrieben 06. April 2006 - 20:09

Hallo,

ich habe ein Problem, welches sich auf Tastendrücke bezieht.

Und zwar möchte ich einen Tastendruck "simulieren". Dazu habe ich in der API die Funktion keybd_event gefunden. Das klappt auch soweit, aber wie kann ich es realisieren dass die Taste PERMANENT gedrückt ist bis ich die wieder "freigebe". Mit der Funktion selber kann ich nur einen einmaligen Tastendruck simulieren.

Hat jemand eine Idee?

MFG Don
0

Anzeige



#2 Mitglied ist offline   Witi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.942
  • Beigetreten: 13. Dezember 04
  • Reputation: 43
  • Geschlecht:Männlich
  • Wohnort:Kingsvillage
  • Interessen:Frickeln

geschrieben 06. April 2006 - 20:14

while-schleife? :veryangry:
0

#3 Mitglied ist offline   Rika 

  • Gruppe: aktive Mitglieder
  • Beiträge: 11.533
  • Beigetreten: 11. Juni 03
  • Reputation: 2
  • Geschlecht:Männlich

geschrieben 06. April 2006 - 20:17

Das hatten wir doch schon mal so ähnlich...

// frei unter GPL :-)

namespace blah {

  using System;
  using System.Runtime.InteropServices;

  public class foobar {
  
	public static void main(String[] args) {
	
	  [DllImport("user32.dll",EntryPoint="PostMessage")]
	  public static extern IntPtr PostMessage(IntPtr hWnd, int msg, int wParam, int lParam);
	  
	  [DllImport("user32.dll",EntryPoint="FindWindow")]
	  private static extern int FindWindow(string _ClassName, string _WindowName);

	  private const int WM_KEYDOWN = 0x0100;
	  private const int VK_F8 = 0x77; // oder die jeweilige Taste
	  private const int Flags = 0x0000; // keine Spezialtaste, Taste war vorher nicht gedrückt
 
	  int HWND = FindWindow("Shell_TrayWnd", NULL); //oder der jeweilige Name des Fenster
	  PostMessage(*HWND, WM_KEYDOWN, VK_F8, Flags );
	  
	}  
  }
}

Konnichiwa. Manga wo shitte masu ka? Iie? Gomenne, sonoyouna koto ga tabitabi arimasu. Mangaka ojousan nihongo doujinshi desu wa 'Clamp X', 'Ayashi no Ceres', 'Card Captor Sakura', 'Tsubasa', 'Chobits', 'Sakura Taisen', 'Inuyasha' wo 'Ah! Megamisama'. Hai, mangaka gozaimashita desu ni yuujin yori.
Eingefügtes Bild
Ja, mata ne!

(For sending email please use OpenPGP encryption and signing. KeyID: 0xA0E28D18)
0

#4 Mitglied ist offline   DeepSpace 

  • Gruppe: Verbannt
  • Beiträge: 6
  • Beigetreten: 06. April 06
  • Reputation: 0

geschrieben 06. April 2006 - 21:18

hallo

kann man auch die windows-taste irgendwie simulieren ? die hab ich hier nicht auf der ersatztastatur drauf aber bräuchte sie eben.
0

#5 Mitglied ist offline   Rika 

  • Gruppe: aktive Mitglieder
  • Beiträge: 11.533
  • Beigetreten: 11. Juni 03
  • Reputation: 2
  • Geschlecht:Männlich

geschrieben 06. April 2006 - 21:54

Der Scancode der Windows-Taste ist 0x5DE0.
Konnichiwa. Manga wo shitte masu ka? Iie? Gomenne, sonoyouna koto ga tabitabi arimasu. Mangaka ojousan nihongo doujinshi desu wa 'Clamp X', 'Ayashi no Ceres', 'Card Captor Sakura', 'Tsubasa', 'Chobits', 'Sakura Taisen', 'Inuyasha' wo 'Ah! Megamisama'. Hai, mangaka gozaimashita desu ni yuujin yori.
Eingefügtes Bild
Ja, mata ne!

(For sending email please use OpenPGP encryption and signing. KeyID: 0xA0E28D18)
0

#6 Mitglied ist offline   DonElTomato 

  • Gruppe: aktive Mitglieder
  • Beiträge: 311
  • Beigetreten: 04. Oktober 05
  • Reputation: 0

geschrieben 07. April 2006 - 07:33

Mhh, das mit der Schleife klappt nich so ganz, weil ich dann nur x Tastendrücke pro Sekunde simuliere und keine wirklich permanent gedrückte taste.

Und das Beispiel klappt leider auch net so wirklich.

Kann ich denn net einfach en Flag setzen?
0

#7 Mitglied ist offline   DonElTomato 

  • Gruppe: aktive Mitglieder
  • Beiträge: 311
  • Beigetreten: 04. Oktober 05
  • Reputation: 0

geschrieben 07. April 2006 - 08:14

Ich korrigiere mich. Das Beispiel funzt. Aber leider habe ich jetzt festgestellt das das Zielprogram die tasten per DirectInput abfragt.

Kann ich da auch was simulieren? Hab davon gar keine Ahnung.
0

#8 Mitglied ist offline   Rika 

  • Gruppe: aktive Mitglieder
  • Beiträge: 11.533
  • Beigetreten: 11. Juni 03
  • Reputation: 2
  • Geschlecht:Männlich

geschrieben 07. April 2006 - 18:26

DirectInputDevice dev = new DirectX9().DirectInputCreate().CreateDevice("GUID_SysKeyboard");
dev.SetCommonDataFormat(DIFORMAT_KEYBOARD);
dev.SetCooperativeLevel(*HWND, DISCL_BACKGROUND | DISCL_NONEXCLUSIVE);
dev.SetDeviceStateKeyboard((new DIKEYBOARDSTATE()).setKey(scancode));

Bringt aber nur was, wenn die Zielapplikation ebenfalls NONEXCLUSIVE benutzt. Ansonsten muss man selbst Events erzeugen und via DDE an die Zielapplikation schicken...

Und frag mich nicht welche Header und Libs man braucht.
Konnichiwa. Manga wo shitte masu ka? Iie? Gomenne, sonoyouna koto ga tabitabi arimasu. Mangaka ojousan nihongo doujinshi desu wa 'Clamp X', 'Ayashi no Ceres', 'Card Captor Sakura', 'Tsubasa', 'Chobits', 'Sakura Taisen', 'Inuyasha' wo 'Ah! Megamisama'. Hai, mangaka gozaimashita desu ni yuujin yori.
Eingefügtes Bild
Ja, mata ne!

(For sending email please use OpenPGP encryption and signing. KeyID: 0xA0E28D18)
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0