Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Sta je u Delphiju analogno komandi SendKeys iz VBa?

[es] :: Pascal / Delphi / Kylix :: Sta je u Delphiju analogno komandi SendKeys iz VBa?

[ Pregleda: 1054 | Odgovora: 9 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

markone
pancevo

Član broj: 47315
Poruke: 66
*.donet.co.yu.



Profil

icon Sta je u Delphiju analogno komandi SendKeys iz VBa?17.09.2006. u 16:40

Da li ima i kako se zove komanda u Delphiju za "simulaciju" pritiskanja tastera na tastaturi? kao SendKeys is VBa? Unapred hvala!
17.09.2006. u 16:40 

_deran_

Član broj: 69493
Poruke: 154
*.suonline.net.



Profil

icon Re: Sta je u Delphiju analogno komandi SendKeys iz VBa?17.09.2006. u 18:09
keybd_event
17.09.2006. u 18:09 

markone
pancevo

Član broj: 47315
Poruke: 66
*.donet.co.yu.



Profil

icon Re: Sta je u Delphiju analogno komandi SendKeys iz VBa?21.09.2006. u 17:42
nisam siguran da smo se razumeli, treba mi komanda koja oponasa pritiskanje tastera... a ne da se nesto desi (event) kada pritisnem taster
21.09.2006. u 17:42 

Jovan Prokopović
Niš

Član broj: 43689
Poruke: 31
*.ptt.yu.



Profil

icon Re: Sta je u Delphiju analogno komandi SendKeys iz VBa?22.09.2006. u 00:22
Ova procedura radi to sto ti treba.

Code:

procedure SendString(value:string);
var c:byte;
label kraj;
begin
  if length(value)=0 then exit;
  while length(value)<>0 do begin
    c:=byte(value[1]);
    if c>=33 then begin
      if c<=41 then begin
        c:=(c+16);
        keybd_event(VK_SHIFT, 0, 0,0);
        keybd_event(c, 0, 0,0);
        keybd_event(c, 0, KEYEVENTF_KEYUP,0);
        keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP,0);
        goto kraj;
      end;
    end;
    if c>=48 then begin
      if c<=57 then begin
        keybd_event(c, 0, 0,0);
        keybd_event(c, 0, KEYEVENTF_KEYUP,0);
        goto kraj;
      end;
    end;
    if c>=65 then begin
      if c<=90 then begin
        keybd_event(VK_SHIFT, 0, 0,0);
        keybd_event(c, 0, 0,0);
        keybd_event(c, 0, KEYEVENTF_KEYUP,0);
        keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP,0);
        goto kraj;
      end;
    end;
    if c>=97 then begin
      if c<=122 then begin
        c:=(c-32);
        keybd_event(c, 0, 0,0);
        keybd_event(c, 0, KEYEVENTF_KEYUP,0);
        goto kraj;
      end;
    end;
    if c=58 then begin
      c:=190;
      keybd_event(VK_SHIFT, 0, 0,0);
      keybd_event(c, 0, 0,0);
      keybd_event(c, 0, KEYEVENTF_KEYUP,0);
      keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP,0);
      goto kraj;
    end;
    if c=59 then begin
      c:=188;
      keybd_event(VK_SHIFT, 0, 0,0);
      keybd_event(c, 0, 0,0);
      keybd_event(c, 0, KEYEVENTF_KEYUP,0);
      keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP,0);
      goto kraj;
    end;
    if c=95 then begin
      c:=189;
      keybd_event(VK_SHIFT, 0, 0,0);
      keybd_event(c, 0, 0,0);
      keybd_event(c, 0, KEYEVENTF_KEYUP,0);
      keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP,0);
      goto kraj;
    end;
    if c=167 then begin
      c:=51;
      keybd_event(VK_SHIFT, 0, 0,0);
      keybd_event(c, 0, 0,0);
      keybd_event(c, 0, KEYEVENTF_KEYUP,0);
      keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP,0);
      goto kraj;
    end;
    if c=61 then begin
      c:=48;
      keybd_event(VK_SHIFT, 0, 0,0);
      keybd_event(c, 0, 0,0);
      keybd_event(c, 0, KEYEVENTF_KEYUP,0);
      keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP,0);
      goto kraj;
    end;
    if c=42 then begin
      c:=187;
      keybd_event(VK_SHIFT, 0, 0,0);
      keybd_event(c, 0, 0,0);
      keybd_event(c, 0, KEYEVENTF_KEYUP,0);
      keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP,0);
      goto kraj;
    end;
    if c=43 then c:=187;
    if c=44 then c:=188;
    if c=46 then c:=190;
    if c=45 then c:=189;
    keybd_event(c, 0, 0,0);
    keybd_event(c, 0, KEYEVENTF_KEYUP,0);

    kraj:
    delete(value,1,1);
    application.ProcessMessages;
  end;
end;
22.09.2006. u 00:22 

markone
pancevo

Član broj: 47315
Poruke: 66
*.donet.co.yu.



Profil

icon Re: Sta je u Delphiju analogno komandi SendKeys iz VBa?24.09.2006. u 10:08
probacu, hvala ;)

nego je tu rade i alt, ctrl, shift ??? i u kom obliku da ih prosledim f-iji?
24.09.2006. u 10:08 

Jovan Prokopović
Niš

Član broj: 43689
Poruke: 31
*.ptt.yu.



Profil

icon Re: Sta je u Delphiju analogno komandi SendKeys iz VBa?24.09.2006. u 21:33
Šaljem ti izmenjenu proceduru, tako da podržava i Alt, Ctrl, Shift ...

Code:

procedure SendString(value:string; Shift:TShiftState; Other:byte);
var c:byte;
label kraj;
begin
  If ssShift in Shift then keybd_event(VK_SHIFT, 0, 0,0);
  If ssAlt in Shift then keybd_event(VK_MENU, 0, 0,0);
  If ssCtrl in Shift then keybd_event(VK_CONTROL, 0, 0,0);
  If ssLeft in Shift then keybd_event(VK_LBUTTON, 0, 0,0);
  If ssMiddle in Shift then keybd_event(VK_MBUTTON, 0, 0,0);
  If ssRight in Shift then keybd_event(VK_RBUTTON, 0, 0,0);

  If Other<>0 then keybd_event(Other, 0, 0,0);

  if length(value)=0 then exit;
  while length(value)<>0 do begin
    c:=byte(value[1]);
    if c>=33 then begin
      if c<=41 then begin
        c:=(c+16);
        keybd_event(VK_SHIFT, 0, 0,0);
        keybd_event(c, 0, 0,0);
        keybd_event(c, 0, KEYEVENTF_KEYUP,0);
        keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP,0);
        goto kraj;
      end;
    end;
    if c>=48 then begin
      if c<=57 then begin
        keybd_event(c, 0, 0,0);
        keybd_event(c, 0, KEYEVENTF_KEYUP,0);
        goto kraj;
      end;
    end;
    if c>=65 then begin
      if c<=90 then begin
        keybd_event(VK_SHIFT, 0, 0,0);
        keybd_event(c, 0, 0,0);
        keybd_event(c, 0, KEYEVENTF_KEYUP,0);
        keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP,0);
        goto kraj;
      end;
    end;
    if c>=97 then begin
      if c<=122 then begin
        c:=(c-32);
        keybd_event(c, 0, 0,0);
        keybd_event(c, 0, KEYEVENTF_KEYUP,0);
        goto kraj;
      end;
    end;
    if c=58 then begin
      c:=190;
      keybd_event(VK_SHIFT, 0, 0,0);
      keybd_event(c, 0, 0,0);
      keybd_event(c, 0, KEYEVENTF_KEYUP,0);
      keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP,0);
      goto kraj;
    end;
    if c=59 then begin
      c:=188;
      keybd_event(VK_SHIFT, 0, 0,0);
      keybd_event(c, 0, 0,0);
      keybd_event(c, 0, KEYEVENTF_KEYUP,0);
      keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP,0);
      goto kraj;
    end;
    if c=95 then begin
      c:=189;
      keybd_event(VK_SHIFT, 0, 0,0);
      keybd_event(c, 0, 0,0);
      keybd_event(c, 0, KEYEVENTF_KEYUP,0);
      keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP,0);
      goto kraj;
    end;
    if c=167 then begin
      c:=51;
      keybd_event(VK_SHIFT, 0, 0,0);
      keybd_event(c, 0, 0,0);
      keybd_event(c, 0, KEYEVENTF_KEYUP,0);
      keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP,0);
      goto kraj;
    end;
    if c=61 then begin
      c:=48;
      keybd_event(VK_SHIFT, 0, 0,0);
      keybd_event(c, 0, 0,0);
      keybd_event(c, 0, KEYEVENTF_KEYUP,0);
      keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP,0);
      goto kraj;
    end;
    if c=42 then begin
      c:=187;
      keybd_event(VK_SHIFT, 0, 0,0);
      keybd_event(c, 0, 0,0);
      keybd_event(c, 0, KEYEVENTF_KEYUP,0);
      keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP,0);
      goto kraj;
    end;
    if c=43 then c:=187;
    if c=44 then c:=188;
    if c=46 then c:=190;
    if c=45 then c:=189;
    keybd_event(c, 0, 0,0);
    keybd_event(c, 0, KEYEVENTF_KEYUP,0);

    kraj:
    delete(value,1,1);
    application.ProcessMessages;
  end;
  If ssShift in Shift then keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP,0);
  If ssAlt in Shift then keybd_event(VK_MENU, 0, KEYEVENTF_KEYUP,0);
  If ssCtrl in Shift then keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP,0);
  If ssLeft in Shift then keybd_event(VK_LBUTTON, 0, KEYEVENTF_KEYUP,0);
  If ssMiddle in Shift then keybd_event(VK_MBUTTON, 0, KEYEVENTF_KEYUP,0);
  If ssRight in Shift then keybd_event(VK_RBUTTON, 0, KEYEVENTF_KEYUP,0);

  If Other<>0 then keybd_event(Other, 0, KEYEVENTF_KEYUP,0);
end;


Sve ostalo možeš da proslediš preko Virtual-Key kodova, spisak potraži u helpu.
24.09.2006. u 21:33 

Vdjuric
Vladimir Djuric
Beograd

Član broj: 20863
Poruke: 64
*.wireless.org.yu.

Sajt: www.marettasoftware.com


Profil

icon Re: Sta je u Delphiju analogno komandi SendKeys iz VBa?25.09.2006. u 10:43
Imam neki unit koji mislim da radi sve sta ti treba po tom pitanju.
postavicu ga na sledecu adresu: www.marettasoftware.com/files/sndKey32.pas

Pozdrav
25.09.2006. u 10:43 

markone
pancevo

Član broj: 47315
Poruke: 66
*.donet.co.yu.



Profil

icon Re: Sta je u Delphiju analogno komandi SendKeys iz VBa?25.09.2006. u 23:24
@Jovan Prokopović: 10x probacu
@Vdjuric link ti nereadi :(
25.09.2006. u 23:24 

Vdjuric
Vladimir Djuric
Beograd

Član broj: 20863
Poruke: 64
*.wireless.org.yu.

Sajt: www.marettasoftware.com


Profil

icon Re: Sta je u Delphiju analogno komandi SendKeys iz VBa?26.09.2006. u 08:59
probaj sa www.marettasoftware.com/files/code.txt
26.09.2006. u 08:59 

Nemanja Avramović
PHP developer, Webinsane
Mladenovac, Srbija

Član broj: 32202
Poruke: 3902
195.252.99.*

ICQ: 266136396
Sajt: www.avramovic.info


Profil

icon Re: Sta je u Delphiju analogno komandi SendKeys iz VBa?26.09.2006. u 12:15
Tejk a luk et atačment
Moj sajt. Moj blog. Moj avatar. Moj grad. Moja frizura.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
Prikačeni fajlovi
26.09.2006. u 12:15 

[es] :: Pascal / Delphi / Kylix :: Sta je u Delphiju analogno komandi SendKeys iz VBa?

[ Pregleda: 1054 | Odgovora: 9 ]

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.