Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Simulation Strg+C geht nicht mehr unter Vista (https://www.delphipraxis.net/116047-simulation-strg-c-geht-nicht-mehr-unter-vista.html)

Logic 22. Jun 2008 16:30


Simulation Strg+C geht nicht mehr unter Vista
 
Hallo,

ich hatte bisher Strg+C so similiert (der zu kopierende Text ist dabei makiert und im Vordergrund):

Delphi-Quellcode:
procedure sim_CtrlC;
begin
  keybd_event(VK_CONTROL, MapVirtualKey(VK_CONTROL, 0), 0, 0);
  keybd_event(Ord('C'), MapVirtualKey(Ord('C'), 0), 0, 0);
  keybd_event(Ord('C'), MapVirtualKey(Ord('C'), 0), KEYEVENTF_KEYUP, 0);
  keybd_event(VK_CONTROL, MapVirtualKey(VK_CONTROL, 0), KEYEVENTF_KEYUP, 0)
end;
Bin aber zwangs neuem PC auf Windows Vista 64bit umgestiegen.

Habt ihr eine Idee was ich abändern muss, damit es auch hier funktioniert?

Gruß
Logic

toms 22. Jun 2008 16:36

Re: Simulation Strg+C geht nicht mehr unter Vista
 
Hallo,

msdn sagt zu keybd_event:

Zitat:

Zitat von msdn
Windows NT/2000/XP/Vista:This function has been superseded. Use SendInput instead.


Apollonius 22. Jun 2008 16:41

Re: Simulation Strg+C geht nicht mehr unter Vista
 
Superseded <> deprecated. Nur weil es eine verbesserte Version gibt, wird man nicht gezwungen, die alte nicht mehr zu verwenden.

Luckie 22. Jun 2008 16:45

Re: Simulation Strg+C geht nicht mehr unter Vista
 
Das ist schon klar. Dann sag uns doch, warum sein Code nicht funktioniert? Ich bin mir ziemlich sicher, dass du das auch nicht kannst. Und was ist daran falsch das Probem mit einer alternativen Lösung zu vrsuchen zu lösen?

toms 22. Jun 2008 16:45

Re: Simulation Strg+C geht nicht mehr unter Vista
 
Zitat:

Zitat von Apollonius
Superseded <> deprecated. Nur weil es eine verbesserte Version gibt, wird man nicht gezwungen, die alte nicht mehr zu verwenden.

Das stimmt schon. Aber da "Use SendInput instead." steht, würde ich es trotzdem mal damit probieren.

Apollonius 22. Jun 2008 16:52

Re: Simulation Strg+C geht nicht mehr unter Vista
 
@Luckie: Ich wollte nur darauf hinweisen, dass es kein Fehler ist, keybd_event zu benutzen. Natürlich kann man stattdessen SendInput verwenden, aber vielleicht ist es besser, den eigentlichen Fehler zu suchen, anstatt ihn zu umgehen - dann macht man ihn vermutlich nicht so leicht noch einmal, ob in diesem Kontext oder einem anderen.

Logic 22. Jun 2008 16:57

Re: Simulation Strg+C geht nicht mehr unter Vista
 
Hey streitet euch doch ned.

Also kann schon sein, dass mein Vista das nicht mehr so akzeptiert... nur hab ich jetzt mal die SendInput Funktion mir in msdn angeschaut:

Delphi-Quellcode:
UINT SendInput(         
    UINT nInputs,
    LPINPUT pInputs,
    int cbSize
);
damit kann ich leider nicht so viel anfangen

Luckie 22. Jun 2008 17:02

Re: Simulation Strg+C geht nicht mehr unter Vista
 
Ich traue mich eigentlich gar nicht mehr auf die Suche zu verweisen.

Logic 22. Jun 2008 17:11

Re: Simulation Strg+C geht nicht mehr unter Vista
 
Ihr sagt immer schaut doch in der Hilfe, aber genau in den Hälfte der Threads genau das gleiche drin... aber gut gesucht hatte ich ja schon, das Ergebnis liefert 45 Treffern... soderle dann bin ich von oben nach unten druchgegangen.

Der erste bringt mir nix, ist ja mein Thread, der 2. enthält zwar den Begriff, da wird dann aber was mit PostMessage gemacht. So beim dritten mit keybd_event oder PostMessage, der vierte taugt gar nix, beim fünten wird was mit PostKeyExHWND gemacht... joa und so bin ich auch schon vorhin die Threads durchgegangen und hab nix gefunden. Die haben das immer mit dem event gemacht wenns auch um strg+c ging.

Du ich benutz die suche schon öfters als du denkst und bevor ich den Thread aufgemacht hab.

Also wenn vll. nen alten Thread im Kopf hast oder nen beispiel in der msdn hast (wo ich keins gefunden hab, in php.net gibts wenigstens nen beispiel) nur her damit :)

Neutral General 22. Jun 2008 17:52

Re: Simulation Strg+C geht nicht mehr unter Vista
 
Zitat:

Zitat von Logic
Hey streitet euch doch ned.

Also kann schon sein, dass mein Vista das nicht mehr so akzeptiert... nur hab ich jetzt mal die SendInput Funktion mir in msdn angeschaut:

Delphi-Quellcode:
UINT SendInput(         
    UINT nInputs,
    LPINPUT pInputs,
    int cbSize
);
damit kann ich leider nicht so viel anfangen

Bei msdn steht ja noch mehr als der Funktionsheader.

Zitat:

Parameters

nInputs
[in] Number of structures in the pInputs array.
pInputs
[in] Pointer to an array of INPUT structures. Each structure represents an event to be inserted into the keyboard or mouse input stream.
cbSize
[in] Specifies the size, in bytes, of an INPUT structure. If cbSize is not the size of an INPUT structure, the function fails.
:arrow:

1. Parameter: Anzahl zu sendenden Tastendrücke.
2. Parameter: Ein Array of TInput in denen die Art der Tastendrücke spezifiert wird (In der Praxis das erste Element des Arrays!)

Das Input-Record:

Delphi-Quellcode:
tagINPUT = packed record
  Itype: DWORD;
  case Integer of
    0: (mi: TMouseInput);
    1: (ki: TKeybdInput);
    2: (hi: THardwareInput);
end;
lType: Die Art des Inputs:
  • INPUT_MOUSE
  • INPUT_KEYBOARD
  • INPUT_HARDWARE

3. Parameter: Größe eines Input-Records :arrow: SizeOf(TInput)

Steht aber alles auch in MSDN ;)

Gruß
Neutral General


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:14 Uhr.
Seite 1 von 2  1 2      

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