Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


PostKeyEx32 punkt?

Postades av 2007-03-11 11:42:17 - Tobias Lindberg, i forum delphi, Tråden har 19 Kommentarer och lästs av 2290 personer

Hej!

Nu är det så att jag håller på med ett litet program här hemma som jag skulle behöva lite hjälp med!
Jag använder den här koden:

procedure PostKeyEx32(key: Word; const shift: TShiftState; specialkey: Boolean) ;
type
TShiftKeyInfo = record
shift: Byte ;
vkey: Byte ;
end;
ByteSet = set of 0..7 ;
const
shiftkeys: array [1..3] of TShiftKeyInfo =
((shift: Ord(ssCtrl) ; vkey: VK_CONTROL),
(shift: Ord(ssShift) ; vkey: VK_SHIFT),
(shift: Ord(ssAlt) ; vkey: VK_MENU));
var
flag: DWORD;
bShift: ByteSet absolute shift;
j: Integer;
begin
for j := 1 to 3 do
begin
if shiftkeys[j].shift in bShift then
keybd_event(shiftkeys[j].vkey, MapVirtualKey(shiftkeys[j].vkey, 0), 0, 0) ;
end;
if specialkey then
flag := KEYEVENTF_EXTENDEDKEY
else
flag := 0;

keybd_event(key, MapvirtualKey(key, 0), flag, 0) ;
flag := flag or KEYEVENTF_KEYUP;
keybd_event(key, MapvirtualKey(key, 0), flag, 0) ;

for j := 3 downto 1 do
begin
if shiftkeys[j].shift in bShift then
keybd_event(shiftkeys[j].vkey, MapVirtualKey(shiftkeys[j].vkey, 0), KEYEVENTF_KEYUP, 0) ;
end;
end;


Sen anropar jag koden med typ:
PostKeyEx32(VK_NUMPAD6, [], False);
Eller:
PostKeyEx32(VK_NUMPAD6, [ssAlt], False);
Eller:
PostKeyEx32(VK_F4, [ssAlt], False);
Ja ni fattar hoppas jag :P

Men nu undrar jag hur jag ska kunna skicka punkt men postkey, hittar inte vad för kod som behövs!


Svara

Sv: PostKeyEx32 punkt?

Postades av 2007-03-11 18:00:04 - Sven Åke Persson

Får se om jag fattat rätt.

Chr(46) är punkt. Ord('.') = 46


Svara

Sv:PostKeyEx32 punkt?

Postades av 2007-03-12 14:50:03 - Tobias Lindberg

Okej tack!

Men jag får det inte att funka!, :/ provade med det här:

PostKeyEx32(ORD('H'), [], False);
PostKeyEx32(ORD(':'), [], False);
PostKeyEx32(ORD('J'), [], False);

och

PostKeyEx32(ORD('H'), [], False);
PostKeyEx32(46, [], False);
PostKeyEx32(ORD('J'), [], False);

Men det vill sig inte.. Det skriver ut h och j men inte punkten..


Svara

Sv: PostKeyEx32 punkt?

Postades av 2007-03-12 14:56:47 - Sven Åke Persson

mmm.... varför är du inte konsekvent och skriver

PostKeyEx32(ORD('.'), [], False);

Functionen vill ha Word tror det är där det strular.


Svara

Sv:PostKeyEx32 punkt?

Postades av 2007-03-12 15:08:49 - Sven Åke Persson

Testade att skriva
Showmessage (IntToStr(Ord('.')))

Det funkade ua 46 blev svaret.

DVS Asciitecken består av 2 byte Word Intelstandard 2E00 RawHex 002E
Ordinal svarar med Word. 0.. 65535

Skriver du bara 46 blir det SmallInt -32768 .. 32767


Svara

Sv: PostKeyEx32 punkt?

Postades av 2007-03-12 15:28:55 - Tobias Lindberg

Svara på båda här!

Skrev fel här menade att jag skrev . istället för :
Men det värkar bara inte funka.

EDIT:
Och nä det funkar inte häller om jag bara skriver
PostKeyEx32(ORD('.'), [], False);
Det blir ingenting där punkten ska vara :/


Svara

Sv:PostKeyEx32 punkt?

Postades av 2007-03-12 17:09:54 - Sven Åke Persson

Det var lurigt, det här skall redas ut ! Testa

PostKeyEx32(ORD(','), [], False);
PostKeyEx32(ORD('-'), [], False);

44 , 45
Stora A börjar på 65 har du satt en undre gräns i [......]
Testa också
PostKeyEx32(ORD('8'), [], False); // valfri siffra
Ord(':') är ju 58 dvs verkar som du har en undre gräns vid 48 något


Svara

Sv: PostKeyEx32 punkt?

Postades av 2007-03-12 17:19:04 - Tobias Lindberg

Ska vi se att skriva , och - funkade ej det blev blankt.
men att skriva 8 på det viset fungerade utmärkt!

Sen kanske jag ska tilllägga att det inte är jag som har skrevigt koden, hitta den på internet :P


Svara

Sv:PostKeyEx32 punkt?

Postades av 2007-03-12 18:24:56 - Sven Åke Persson

Skitmystiskt, det finns en undre gräns på Ord('0') //noll 48


Svara

Sv: PostKeyEx32 punkt?

Postades av 2007-03-12 18:33:32 - Sven Åke Persson

Tror jag kom på det.
Testa med både Shift och Alt och True
Har något med svenskt tangenbord att göra.

Testa Ord('Ö')


Svara

Sv:PostKeyEx32 punkt?

Postades av 2007-03-12 18:52:45 - Tobias Lindberg

hmm har provat lite olika nu:
PostKeyEx32(Ord('.'), [], False);
PostKeyEx32(Ord('.'), [], True);
PostKeyEx32(Ord('.'), [ssAlt], False);
PostKeyEx32(Ord('.'), [ssAlt], True);
PostKeyEx32(Ord('.'), [ssShift], False);
PostKeyEx32(Ord('.'), [ssShift], True);
PostKeyEx32(Ord('.'), [ssAlt, ssShift], False);
PostKeyEx32(Ord('.'), [ssAlt, ssShift], True);

men inget vill sig funka och sen så funka det inte häller när jag skulle prova att få ut Ö..


Svara

Sv: PostKeyEx32 punkt?

Postades av 2007-03-12 19:32:06 - Sven Åke Persson

Oki det var lurigt.
Skall ladda ner dit exempel och testa lite själv.

Återkommer på denna kanal.

Finns det något annat geni därute som kommer på vad det kan vara ?


Svara

Sv:PostKeyEx32 punkt?

Postades av 2007-03-12 20:03:22 - Tobias Lindberg

Okej tack :)

Kom och tänka ifall man kunnde använda alt + siffror så får man fram bokstäver/siffror/tecken med rätt kompination.
Skrev en lista för ett tag sedan och där hittade jag Alt+46 blir då .
Så om man kunnde använda det för att få fram en punkt men jag fick inte det att funka :/


Svara

Sv: PostKeyEx32 punkt?

Postades av 2007-03-13 00:35:23 - Sven Åke Persson

mmm... har nu provkört exemplet och börjar förstå. Obs börjar.

Funktionen kan bara exekvera sådant som Windows System godkänner som short cut.

Vad skall du använda detta till ? Varför vill du ha (.) punkt ?

Man kan bara skicka tecken som har både UperCase och LowerCase (Versaler o Gemena)

I Keyargumentet kan man bara ha UperCase tecken ex.'A' och svar ut kommer 'a'
Punkt '.' som ex har bara ett läge godkännes ej.


Svara

Sv:PostKeyEx32 punkt?

Postades av 2007-03-13 09:28:58 - Sven Åke Persson

Här är en annan mer rak metod. Jag gör SendKeys till Edit1.
Obs Edit1 skall vara tom i designläge.
Du kan kanske göra en kombination av de båda Subrutinerna.
<code>
'// Example:
'//Du kan skicka till alla fönster som har HWnd (handler) här Edit1
procedure TForm1.Button1Click(Sender: TObject);
var
HWin : Integer ;
begin
HWin := Edit1.Handle ;
SendKeys('.',HWin) ;
end;

procedure SendKeys(S: string; Window: hWnd);
var
i: Integer;
begin
ShowWindow(Window, SW_RESTORE);
for i := 1 to Length(S) do
SendMessage(Window, WM_CHAR, Ord(S[i]), 0);
end;
</code>


Svara

Sv: PostKeyEx32 punkt?

Postades av 2007-03-13 18:06:00 - Sven Åke Persson

Här en modifierad version när du önskar skicka kombinerade argument,
ex. Ctrl + F5 mfl.

Fortfarand brister men nu är Vi på väg.
<code>
procedure PostKeyEx32(key: Word; const shift: TShiftState; specialkey: Boolean);
type
TShiftKeyInfo = record
shift: Byte;
vkey: Byte;
end;
byteset = set of 0..7;
const
shiftkeys: array [1..3] of TShiftKeyInfo =
((shift: Ord(ssCtrl); vkey: VK_CONTROL),
(shift: Ord(ssShift); vkey: VK_SHIFT),
(shift: Ord(ssAlt); vkey: VK_MENU));
var
flag: DWORD;
bShift: ByteSet absolute shift;
i : Integer ;
begin
for i := 1 to 3 do
begin
if shiftkeys[i].shift in bShift then
keybd_event(shiftkeys[i].vkey, MapVirtualKey(shiftkeys[i].vkey, 0), 0, 0);
end; { For }
if specialkey then
flag := KEYEVENTF_EXTENDEDKEY
else
flag := 0;
keybd_event(key, MapvirtualKey(key, 0), flag, 0);
flag := flag or KEYEVENTF_KEYUP;
keybd_event(key, MapvirtualKey(key, 0), flag, 0);
for i := 3 downto 1 do
begin
if shiftkeys[i].shift in bShift then
keybd_event(shiftkeys[i].vkey, MapVirtualKey(shiftkeys[i].vkey, 0),
KEYEVENTF_KEYUP, 0);
end; { For }
end; { PostKeyEx32 }

procedure SendKeys(S: Char; Window: hWnd);
begin
If Not(S in ['0'..'Z']) Then Begin
ShowWindow(Window, SW_RESTORE);
SendMessage(Window, WM_CHAR, Ord(S), 0)
End
Else Begin
Form1.Edit1.SetFocus ;// inte bra den rensar Edit1 och lägger till det senaste
PostKeyEx32(Ord(S),[ssShift], False);
End
End ;

// Test exempel skickar till Edit1
procedure TForm1.Button1Click(Sender: TObject);
begin
SendKeys('Ö',Form1.Edit1.handle)
end;
</code>


Svara

Sv:PostKeyEx32 punkt?

Postades av 2007-03-14 11:04:00 - Sven Åke Persson

Vid närmare eftertanke tycker jag att det är onödigt att kombinera dessa 2
Kör den du har nu om du vill skicka kombinationer Ctrl Alt Shift och F1- F12
och
Använd denna om du bara köra enkla Sendkeys till fönster.
<code>
'// Example:
'//Du kan skicka till alla fönster som har HWnd (handler) här Edit1

procedure SendKeys(S: string; Window: hWnd);
var
i: Integer;
begin
ShowWindow(Window, SW_RESTORE);
for i := 1 to Length(S) do
SendMessage(Window, WM_CHAR, Ord(S[i]), 0);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
HWin : Integer ;
begin
HWin := Edit1.Handle ;
SendKeys('Tobias',HWin) ;
end;
</code>


Svara

Sv: PostKeyEx32 punkt?

Postades av 2007-03-14 18:10:20 - Tobias Lindberg

Hej!

Tack så mycket för allt.
Men hur ska man göra om man vill skicka till ett annat fönster alltså som inte tillhör programet!?


EDIT:
Och jag vet inte vad programet som den ska skriva i exakt. för det ändrar title hela tiden.
Så det som jag vill få det att funka är med den koden jag har innan att få den skriva i det fönstret som ligger överst..

Hoppas du förstår!


Svara

Sv:PostKeyEx32 punkt?

Postades av 2007-03-14 21:18:21 - Sven Åke Persson

Jag förstår. Tex ett Worddokument eller NotPad mfl.

Skall kolla det och nu resonerar jag kring Sendkeys.


Svara

Sv: PostKeyEx32 punkt?

Postades av 2007-03-15 14:30:45 - Tobias Lindberg

Okej tack så himmla mycket!
Väntar spänt på svar :)


Svara

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 614
27 953
271 709
539
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies