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: 3722 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

markone
pancevo

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



Profil

icon Sta je u Delphiju analogno komandi SendKeys iz VBa?17.09.2006. u 16:40 - pre 185 meseci
Da li ima i kako se zove komanda u Delphiju za "simulaciju" pritiskanja tastera na tastaturi? kao SendKeys is VBa? Unapred hvala!
 
Odgovor na temu

_deran_

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



+1 Profil

icon Re: Sta je u Delphiju analogno komandi SendKeys iz VBa?17.09.2006. u 18:09 - pre 185 meseci
keybd_event
 
Odgovor na temu

markone
pancevo

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



Profil

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

Jovan Prokopović
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 - pre 184 meseci
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;
 
Odgovor na temu

markone
pancevo

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



Profil

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

nego je tu rade i alt, ctrl, shift ??? i u kom obliku da ih prosledim f-iji?
 
Odgovor na temu

Jovan Prokopović
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 - pre 184 meseci
Š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.
 
Odgovor na temu

Vdjuric
Vladimir Djuric
student
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 - pre 184 meseci
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
 
Odgovor na temu

markone
pancevo

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



Profil

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

Vdjuric
Vladimir Djuric
student
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 - pre 184 meseci
probaj sa www.marettasoftware.com/files/code.txt
 
Odgovor na temu

Nemanja Avramović
Software architect
Tap medical
Beograd, Srbija

Član broj: 32202
Poruke: 4385
195.252.99.*

Sajt: https://avramovic.info


+45 Profil

icon Re: Sta je u Delphiju analogno komandi SendKeys iz VBa?26.09.2006. u 12:15 - pre 184 meseci
Tejk a luk et atačment
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
Prikačeni fajlovi
 
Odgovor na temu

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

[ Pregleda: 3722 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

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