Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 9 odgovora
  • 6.163 pregleda

Najnovija ↓

Re: Sta je u Delphiju analogno komandi SendKeys iz VBa? 22.09.2006. u 01:22 · pre 244 meseca #4
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;
Re: Sta je u Delphiju analogno komandi SendKeys iz VBa? 24.09.2006. u 22:33 · pre 244 meseca #6
Š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.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme