HOME 개발팁 델파이 자주사용하는 함수 모음

프로그램 작업하다 좋은 팁, 정보, 테스트를 기록하는 곳입니다.


delphi | 델파이 자주사용하는 함수 모음

페이지 정보

작성자 굿스웹 작성일19-01-07 14:16 조회6,597회 댓글0건

본문

http://www.howto.pe.kr/zboard/zboard.php?id=delphi_tiptrick&page=12&select_arrange=hit&desc=asc&category=&sn=on&ss=off&sc=off&keyword=김영대&sn1=on&divpage=1
http://blog.naver.com/PostView.nhn?blogId=sinminjong&logNo=10031417855&redirect=Dlog&widgetTypeCall=true
http://beodeulpiri.egloos.com/9799898
http://www.zetswing.com/bbs/board.php?bo_table=DELPHI_GRA&wr_id=15
http://yjpark.tistory.com/7
http://blog.naver.com/bloodguy80?Redirect=Log&logNo=110039742406


https://developer.mozilla.org/ko/docs/Web/API/Element/getAttribute


IE.Document.all.item('user_id').value
WebBrowser1.Navigate('http://www.sjworks.net');
WebBrowser1.OleObject.Document.Focus();
 WebBrowser1.OleObject.Document.all.item('submit').Click;

[클릭]
procedure TForm1.Button1Click(Sender: TObject);
begin
  WebBrowser1.Navigate('http://www.sjworks.net');
end;

setAttribute

.innerHTML
.innertext;



//값변경
IE.Document.GetElementByID('tx_trex_container').setAttribute('id','dddddd');
IE.Document.GetElementByID('tx_trex_container').setAttribute('class','dddddd');




.attr('class','class_name');


ShellExecute(Handle, 'open', PCHar('C:\test'), nil, nil, SW_SHOWNORMAL);


procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Label1.Caption:=TimeToStr(Now);
end;



ShellExeCute(0, 'Open', 'iexplore.exe', 'www.delmadang.com/member/member_login_ok.asp?strrelog=1&strUserId=ID&strPasswd=PW', Nil, SW_SHOWNORMAL);

[종료]
Close;
System.Exit;


[인트]
IntToStr(c);
StrToInt

Close;


[익스플러 타이틀 가져오기]
chkname := WebBrowser1.LocationName;
    WebBrowser1.Navigate('http://www.libyj.go.kr/sdi/sdi_auto.php');
    LabeledEdit1.Text := 'MAIL SEND..';

[마우스 커서위치]
SetCursorPos(100, 100);


// 뽀너쓰 :: 키보드 눌르기
keybd_event(VK_LCONTROL, VK_LCONTROL, 0, 0 ); // VK_... 는 win32 api 에서 Virtual Key 를 찾으세요.
keybd_event(VK_MENU,VK_MENU,0,0);
keybd_event(VK_MENU,VK_MENU,KEYEVENTF_KEYUP,0);
keybd_event(VK_DOWN,VK_DOWN,0,0);
keybd_event(VK_DOWN,VK_DOWN,KEYEVENTF_KEYUP,0);
keybd_event(vk_Control, 0, 0, 0);
Application.ProcessMessages;
keybd_event(VkKeyScan('L'), 0, 0, 0);
Application.ProcessMessages;
keybd_event(VkKeyScan('L'), 0, KEYEVENTF_KEYUP, 0);
Application.ProcessMessages;
keybd_event(vk_Control, 0, KEYEVENTF_KEYUP, 0);
Application.ProcessMessages;



[활성화 윈도우의 핸들알기]

현재 활성화 되어있는 윈도우의 핸들을 알려면
GetForegoundWindow 하나면 끝납니다.
MyWND := GetForegroundWindow;

[타이틀바의 크기를 알려면]
GetSystemMetrics를 사용하면 윈도에서 사용하는 모든 표준 사이즈를 알 수 있습니다.
ShowMessage( Format( '캡션바 높이: %d', [GetSystemMetrics(SM_CYCAPTION)] ) );



var
 sys_time: TSystemTime;
begin
 sys_time.wYear  := StrToInt(FormatDateTime('yyyy', ADateTime));
 sys_time.wMonth  := StrToInt(FormatDateTime('m', ADateTime));
 sys_time.wDay    := StrToInt(FormatDateTime('d', ADateTime));
 sys_time.wHour  := StrToInt(FormatDateTime('h', ADateTime));
 sys_time.wMinute := StrToInt(FormatDateTime('n', ADateTime));
 sys_time.wSecond := StrToInt(FormatDateTime('s', ADateTime));


[마우스 위치]
SetCursorPos(177,9);
sleep(10);
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,GetMessageExtraInfo());




//mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,GetMessageExtraInfo());
//mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,GetMessageExtraInfo());
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); //
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);  // 마우스 좌클릭 실행 명령
//mouse_event(MOUSEEVENTF_RIGHTDOWN,0,0,0,GetMessageExtraInfo());
sleep(5);
keybd_event(VK_RETURN, 0, 0, 0);
ShowMessage('처리완료');
SetCursorPos(177,9); //로그인 위치
sleep(5);
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); //
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);  // 마우스 좌클릭 실행 명령

[문자]
S: String;

[공백삭제]
Trim();

[문자길이]
Length

[함수]
Ord, Pred, Succ

[배열개수]
T.Count


[종료]
 Application.ProcessMessages;
 Close;
 System.Exit;

[클릭보드]
CopyToClipboard

[문자치환]
StringReplace(Trim(SGrid.Cells[7,SGrid.Row]),'전송','',[RfReplaceAll]); // 문자치환

[대소문자]
Uppercase('Button1') = Uppercase('button1') 처럼.


[구분함수]
procedure StringSplit(const Delimiter: Char; Input: string; var Strings: TStringList);
begin
  Assert(Assigned(Strings)) ;
  Strings.Clear;
  ExtractStrings([Delimiter], [' '], PChar(Input), Strings);
end;


[해당 버튼 시작]
button1Click(sender) ;


[타임]
Timer1.enabled:=false;
Timer1.enabled:=true;

[다시시작]
  Form1.Refresh;
  Draw;

Edit2.Text := IntToHex(StrToInt(Edit1.Text), 6);
 


(1) 파일과 연관(association)된 프로그램으로 파일을 엽니다
ShellExecute(Handle, 'open', PChar('test.txt'), nil, nil, SW_SHOW);

(2) notepad.exe 에 파라미터로 config.sys 파일을 주어 메모장을 실행합니다
ShellExecute(Handle, 'open', 'notepad', 'c:\config.sys', nil, SW_SHOW);

(3) PC에 설치된 기본 웝브라우저로 지정한 사이트를 엽니다.
ShellExecute(Handle, 'open', 'www.howto.pe.kr', nil, nil, SW_SHOW);

(4) 특정 폴더를 시작 폴더로 하는 윈도우즈 탐색기를 엽니다
ShellExecute(Handle, 'explore', PChar('c:\windows)', nil, nil, SW_SHOW);

(5) readme.doc 파일을 연결된 프로그램으로 인쇄하고 화면을 닫습니다
ShellExecute(Handle, 'print', 'readme.doc', nil, nil, SW_SHOW);

(6) rMyDelphiFile.pas 파일을 wordpad 프로그램으로 인쇄하고 화면을 닫습니다
ShellExecute(Handle, 'print', 'wordpad.wxe', 'MyDelphiFile.pas', nil, SW_SHOW);

[정수 변경]
  NumberString: string;
  Number: Integer;
  I, Code: Integer;

    Val(Edit3.Text, I, Code);
    Number := I - 1;
    Edit3.Text := IntToStr(Number);

마우스 이벤트 보다는 GetCursorPos() SetCursorPos() 를 사용하세요




WinExec("\"C:\\Program Files\\MyApp.exe\", -L -S", ...)


[if]
if  Edit1.Text = Edit7.Text then
  begin
    [    ]
  end

  else
  begin
    [    ]
  end;




[창 제어]

FindWindow  - 부모의 핸들 찾기
FindWindowEx - 자시의 핸들 찾기



[명령 요청]
PostMessage



SendMessage(note, WM_CLOSE, 0, 0);  //프로세서 종료



[창고정]
uses
  shellapi;


var
  note: hwnd;

begin
  WinExec('C:\Program Files (x86)\MelOn Player4\Melon.exe', SW_SHOWNORMAL);
  Sleep(300);
  note := Windows.FindWindow('MelOnFrameV40',nil);
  SetWindowPos(note, 0, 0, 0, ClientWidth, ClientHeight,SWP_ASYNCWINDOWPOS);
  Sleep(1000);
  SendMessage(note, WM_CLOSE, 0, 0);  //종료


[Length] 문자열의 길이


[화면on]
  //화면ON
  SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, -1);
  SetCursorPos(177,9); //포인트지정
  SetCursorPos(177,56); //포인트지정


[화면 off]
  //화면OFF
  SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 2);



[서비스 등록]
  SetRegistryData(HKEY_LOCAL_MACHINE,'\Software\Microsoft\Windows\CurrentVersion\Run','Server_p1', rdString,'C:\MelonPlay\daemon.exe');
  //RunOnWinStart('Server_p1', 'C:\MelonPlay\daemon.exe', True);
  //MessageDlg('서비스 등록!', mtInformation, [mbOk], 0);
  //RunOnWinStart('Serverp2', 'C:\MelonPlay\daemon.exe', False);
  ShowMessage('서비스 등록되었습니다.');
  except
    MessageDlg('Error to delete registry!', mtInformation, [mbOk], 0);
  end;

[서비스 삭제]
RunOnWinStart('Server_p1', '', False);
//RunOnWinStart('', '', False);
//RunOnWinStart('p1', 'C:\MelonPlay\daemon.exe', False);
//MessageDlg('서비스 삭제!!', mtInformation, [mbOk], 0);
//SetRegistryData(HKEY_LOCAL_MACHINE,'\Software\Microsoft\Windows\CurrentVersion\Run','p1', rdString, '');
  ShowMessage('서비스 삭제되었습니다.');

[프로그램 실행]
  Surl := Trim('C:\MelonPlay\p1.exe');
  WinExec(PChar(Surl), SW_SHOWNORMAL);


[익스플러어]
 WebBrowser2.Navigate('http://www.naver.com');
 WebBrowser1.OleObject.Document.ParentWindow.execScript('alert("Hello");');
 Webbrowser.oleobject.document.frames.item(j).document.all.tags('INPUT').leng
 Webbrowser.oleobject.document.frames.item(j).document.forms.item(k).document.all.tags('INPUT').Item(i).Name);
 ie.Document.getElementById("su").click()



<div class="nsite section_nsiteBase">
 <ul class="type01">
 <li>
  <dl>
    <dt><a href="http://www.e2cast.com/" target="_blank" onclick="return goOtherCR(this, 'a=sit_rnk*n.tit&amp;r=1&amp;i=0000002d_0000001c9268&amp;u='+urlencode(this.href))"><b class="hl">이투캐스트</b></a>
    </dt>

[length 문자열함수]


[char 아스키값]


[사이트 초기화]
WebBrowser1.Navigate('About:Blank');

[공인IP가져오기]
function My_RealIP : String;
var
  IdHTTP: TIdHTTP;
  st: integer;
begin
  Result := ''; // 못구했을땐 아무값도 없음
 
  IdHTTP := TIdHTTP.Create(nil);
  try
    Result := IdHTTP.Get('http://checkip.dyndns.com');
    st := pos(': ', Result);
    Result := Copy(Result, st + 1, MaxInt);
    st := pos('<', Result);
    Result := Copy(Result, 1, st - 1);
 
  finally
    IdHTTP.free;
  end
end;

 IdHTTP1.Request.UserAgent:='Mozilla/4.0';



[]
try

  try

  finally
  end;

except

end;

[익스플러 삭제]
PostMessage (IE, WM_CLOSE, 0, 0);




AppSleep(10);

  Try
  word52 := Edit52.Text;
  IE.Document.sform.query.value := word52;
  IE.Document.sform.submit();
  Except
    on EOleError do
    Button9Click(sender); // 창닫기

  end;


www.daum.net
www.naver.com



try
    // Some code which may raise an exception
  except
    on E: EConvertError do
    begin
      // Handle only EConvertError, or any derived classes
    end;
    on E: Exception do
    begin
      // Handle only Exception, or any derived classes
    end;
  end;




  try
      try
        Result := IdHTTP.Get('http://bluead1.com/sso/download.php');
      except
        on E: Exception do
        begin
          //raise;
        end;
      end;

  finally
    IdHTTP.Disconnect;
    IdHTTP.free;
  end;




[마우스 제어]

 //창으로 이동
 SetCursorPos(Form1.Left + 990, Form1.Top + 45);


 getcursorpos( TPoint형 ); // 현재 커서의 위치를 뽑아줍니다.
 setcursorpos( x , y ); // 커서를 x,y 좌표에 위치 시킵니다.


 mouse_event : 마우스 이동(상대좌표 - 현재 마우스 위치기준) 및 버튼 등의 동작
 SetCursorPos : 단순 마우스 위치이동(절대좌표)



 etcursorpos( TPoint형 ); // 현재 커서의 위치를 뽑아줍니다.
 setcursorpos( x , y ); // 커서를 x,y 좌표에 위치 시킵니다.
 mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0); // 마우스 왼쪽 버튼을 누릅니다.
 mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0); // 마우스 왼쪽 버튼을 땝니다.
 ===========================================================
 따라서 아래와 같이 사용할수 있게죠!..^^ ~
 ▶마우스를 특정 위치까지 드레그
 mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
 setcursorpos(490, 282);
 mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
 ▶마우스를 특정 위치에 클릭
 setcursorpos(490, 282);
 mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
 mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);

 ▶마우스를 특정 위치에 더블 클릭
 setcursorpos(490, 282);
 mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
 mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
 sleep(10);
 mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
 mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);



// Ctrl + V
Keybd_Event(VK_CONTROL, MapVirtualKey(VK_CONTROL, 0), 0, 0);
Keybd_Event(Ord('V'), MapVirtualKey(Ord('V'), 0), 0, 0);
Keybd_Event(Ord('V'), MapVirtualKey(Ord('V'), 0), KEYEVENTF_KEYUP, 0);
Keybd_Event(VK_CONTROL, MapVirtualKey(VK_CONTROL, 0), KEYEVENTF_KEYUP, 0);

// Shift + End
Keybd_Event(VK_SHIFT, MapVirtualKey(VK_SHIFT, 0), KEYEVENTF_EXTENDEDKEY, 0);
Keybd_Event(VK_END, MapVirtualKey(VK_END, 0), KEYEVENTF_EXTENDEDKEY, 0);
Keybd_Event(VK_END, MapVirtualKey(VK_END, 0), KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0);
Keybd_Event(VK_SHIFT, MapVirtualKey(VK_SHIFT, 0), KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0);


// 컨트롤 키 누르고
SimulateKeyDown(VK_CONTROL);

// 'V' 키 누르고..
SimulateKeyDown(Ord('V'));

// 'V' 키 떼고..
SimulateKeyUp(Ord('V'));


// 컨트롤 키 떼고..
SimulateKeyUp(VK_CONTROL);

// 드레그
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
setcursorpos(490, 282);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);




SetCursorPos(Form1.Left+30, Form1.Top+100);
  mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
  mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);

  with WebBrowser1 do
    if Document <> nil then
      with Application as IOleobject do
        DoVerb(OLEIVERB_UIACTIVATE, nil, WebBrowser1, 0, Handle, GetClientRect);

  // send Control-A
  keybd_event(VK_CONTROL, MapVirtualKey(VK_CONTROL, 0), 0, 0);
  keybd_event(ord('A'), MapvirtualKey(ord('A'), 0), 0, 0);
  keybd_event(ord('A'), MapvirtualKey(ord('A'), 0), KEYEVENTF_KEYUP, 0);
  keybd_event(VK_CONTROL, MapVirtualKey(VK_CONTROL, 0), KEYEVENTF_KEYUP, 0);

  mySleep(500);

  keybd_event(VK_CONTROL, MapVirtualKey(VK_CONTROL, 0), 0, 0);
  keybd_event(VK_INSERT, MapvirtualKey(VK_INSERT, 0), KEYEVENTF_EXTENDEDKEY, 0);
  keybd_event(VK_INSERT, MapvirtualKey(VK_INSERT, 0), KEYEVENTF_EXTENDEDKEY + KEYEVENTF_KEYUP, 0);
  keybd_event(VK_CONTROL, MapVirtualKey(VK_CONTROL, 0), KEYEVENTF_KEYUP, 0);

  mySleep(2000);

  // put it into a Delphi control
  SetCursorPos(Form1.Left+Form1.Width-50, Form1.Top+100);

  mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
  mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);

  Memo1.SetFocus;
  SetForegroundWindow(Memo1.Handle);

  mySleep(500);

//  keybd_event(VK_SHIFT, MapVirtualKey(VK_SHIFT, 0), 0, 0);
//  keybd_event(VK_INSERT, MapvirtualKey(VK_INSERT, 0), KEYEVENTF_EXTENDEDKEY, 0);
//  keybd_event(VK_INSERT, MapvirtualKey(VK_INSERT, 0), KEYEVENTF_EXTENDEDKEY + KEYEVENTF_KEYUP, 0);
//  keybd_event(VK_SHIFT, MapVirtualKey(VK_SHIFT, 0), KEYEVENTF_KEYUP, 0);
  keybd_event(VK_CONTROL, MapVirtualKey(VK_CONTROL, 0), 0, 0);
  keybd_event(ord('V'), MapvirtualKey(ord('V'), 0), 0, 0);
  keybd_event(ord('V'), MapvirtualKey(ord('V'), 0), KEYEVENTF_KEYUP, 0);
  keybd_event(VK_CONTROL, MapVirtualKey(VK_CONTROL, 0), KEYEVENTF_KEYUP, 0);

  mySleep(1000);







  Memo1.Lines.SaveToFile(sFn);


[델파이 - 웹브라우저의 특정 텍스트 하일라이팅 하기관리자]
procedure WBLocateHighlight(WB: TWebBrowser; Text: string) ;
const
  prefix = '<SPAN style="COLOR: white; BACKGROUND-COLOR: red">';
  suffix = '</SPAN>';
var
  tr: IHTMLTxtRange;
begin
  if Assigned(WB.Document) then
  begin
    tr := ((wb.Document AS IHTMLDocument2).body AS IHTMLBodyElement).createTextRange;
    while tr.findText(Text, 1, 0) do
    begin
      tr.pasteHTML(prefix + tr.htmlText + suffix) ;
      tr.scrollIntoView(True) ;
    end;
  end;
end;

[델파이에서 외부 프로그램 실행후 결과 받아오는 함수입니다.]
function Spawn(CmdLine: PChar): DWord;
var
  SInfo: TStartupInfo;
  PInfo: TProcessInformation;
begin
  FillChar(SInfo, SizeOf(SInfo), 0);
  SInfo.cb := SizeOf(SInfo);
  if CreateProcess(nil, CmdLine, nil, nil, true, 0, nil, nil, SInfo, PInfo) then
  begin
    CloseHandle(PInfo.hThread);
    WaitForSingleObject(PInfo.hProcess, INFINITE);
    GetExitCodeProcess(PInfo.hProcess, DWord(Result));
    CloseHandle(PInfo.hProcess);
  end
  else
    Result := GetLastError;
end;

[컴퓨터에 설치된 모든 랜카드의 맥어드레스 얻기]

procedure TForm1.Button1Click(Sender: TObject);
var
  NumInterfaces: Cardinal;
  AdapterInfo: array of TIpAdapterInfo;
  OutBufLen: ULONG;
  i: integer;
begin
  GetNumberOfInterfaces(NumInterfaces);
  SetLength(AdapterInfo, NumInterfaces);
  OutBufLen := NumInterfaces * SizeOf(TIpAdapterInfo);
  GetAdaptersInfo(@AdapterInfo[0], OutBufLen);
  Memo1.Lines.Clear;
  for i := 0 to NumInterfaces - 1 do begin
    Memo1.Lines.Add(Format('%.2x:%.2x:%.2x:%.2x:%.2x:%.2x',
      [AdapterInfo[i].Address[0], AdapterInfo[i].Address[1],
      AdapterInfo[i].Address[2], AdapterInfo[i].Address[3],
      AdapterInfo[i].Address[4], AdapterInfo[i].Address[5]]));
  end;
end;

[문자열 주어진 길이만큼 자르기]
function CutStringC( value : String; index, count : Integer ) : String;
var
  tmp : String;
begin
  tmp := CutStringA( value, index + count );
  tmp := CutStringF( tmp, index );
  CutStringc := tmp;
end;

[인터넷 연결상태 체크하는 함수]
//전역함수선언
function InetIsOffline(Flag: Integer): Boolean; stdcall; external 'URL.DLL';

//함수 사용예)
if InetIsOffline(0) then
    ShowMessage('This computer is not connected to Internet!')
else
    ShowMessage('You are connected to Internet!');


[타이틀바 숨기기]
델파이(Delphi)에서 타이틀바(Caption bar) 숨기기
#타이틀바 숨기기
Procedure HideTitlebar(Form:TForm);
Var
 Save : LongInt;
Begin
  If Form.BorderStyle=bsNone then Exit;
  Save:=GetWindowLong(Form.Handle,gwl_Style);
  If (Save and ws_Caption)=ws_Caption then Begin
    Case Form.BorderStyle of
      bsSingle,
      bsSizeable : SetWindowLong(Form.Handle,gwl_Style,Save and
        (Not(ws_Caption)) or ws_border);
      bsDialog : SetWindowLong(Form.Handle,gwl_Style,Save and
        (Not(ws_Caption)) or ds_modalframe or ws_dlgframe);
    End;
    Form.Height := Form.Height - getSystemMetrics(sm_cyCaption);
    Form.Refresh;
  End;
end;

[메인폼 숨기기]
델파이(Delphi)에서 메인폼(Main Form) 숨기기(Hide) 함수입니다

메인폼 숨기기 함수입니다.^^
procedure HideMainForm;
begin
  SendMessage (application.Handle, WM_SYSCOMMAND, SC_MINIMIZE, 0);
  ShowWindow(Application.Handle, SW_HIDE );
end;

#메인폼 보이기 함수입니다.^^
procedure ShowMainForm;
begin
  SendMessage (application.Handle, WM_SYSCOMMAND, SC_RESTORE, 0);
  ShowWindow(Application.Handle, SW_SHOW );
  SetForegroundWindow( Application.Handle );
end;


[델파이(Delphi)에서 외부 프로그램 실행후 결과 받아오기 (CreateProcess)]
function Spawn(CmdLine: PChar): DWord;
var
  SInfo: TStartupInfo;
  PInfo: TProcessInformation;
begin
  FillChar(SInfo, SizeOf(SInfo), 0);
  SInfo.cb := SizeOf(SInfo);
  if CreateProcess(nil, CmdLine, nil, nil, true, 0, nil, nil, SInfo, PInfo) then
  begin
    CloseHandle(PInfo.hThread);
    WaitForSingleObject(PInfo.hProcess, INFINITE);
    GetExitCodeProcess(PInfo.hProcess, DWord(Result));
    CloseHandle(PInfo.hProcess);
  end
  else
    Result := GetLastError;
end;

[태그 삭제]
function StripHTML(S: string): string;
var
  TagBegin, TagEnd, TagLength: integer;
begin
  TagBegin := Pos( '<', S);      // search position of first <

  while (TagBegin > 0) do begin  // while there is a < in S
    TagEnd := Pos('>', S);              // find the matching >
    TagLength := TagEnd - TagBegin + 1;
    Delete(S, TagBegin, TagLength);    // delete the tag
    TagBegin:= Pos( '<', S);            // search for next <
  end;
 
  Result := S;                  // give the result
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Memo2.Text := StripHTML(Memo1.Text);
end;


[html 소스 보기]
procedure WB_SaveAs_HTML(WB:TWebBrowser; StrLst : TStrings );
// uses ActiveX;
var
  PersistStream: IPersistStreamInit;
  Stream: IStream;
  FileStream: TmemoryStream;
begin
  if not Assigned(WB.Document) then
  begin
    ShowMessage('Document not loaded!');
    Exit;
  end;

  PersistStream := WB.Document as IPersistStreamInit;
  FileStream := TmemoryStream.Create;
  try
    Stream := TStreamAdapter.Create(FileStream, soReference)
              as IStream;
    if Failed(PersistStream.Save(Stream, True)) then
      ShowMessage('SaveAs HTML fail!');
    FileStream.Position := 0;
    StrLst.Clear;
    StrLst.LoadFromStream( FileStream );
  finally
    FileStream.Free;
  end;
end;

[Form 숨기기]
폼 생성 후
 
Form을 숨길려면
 
ShowWindow(Self.Handle,SW_HIDE);를 하면 된다.
 
폼 생성과 동시에 아이콘(TTrayIcon) 형태로만 만들어지기 위해서는
 
OnCrate 이벤트에
 
Application.ShowMainForm := false; 를 주면 폼은 생성되지 않는것처럼 보인다
 
아이콘 형태에서 다시 폼을 형태를 바꿀려면
 
  ShowWindow(MainForm.Handle, SW_SHOW);
  MainForm.Show;
 
를 넣어야 한다.
 
MainForm.Show를 안넣을시 컴포넌트가 안보일것이다.


[중복실행방지]
program Project_OneRun;  //Project Source File
uses
  OneRun in 'OneRun.pas',
  Forms,
  UOneRun in 'UOneRun.pas' {Form7} ;
{$R *.res}
begin
  RegisterThisInstance('Test'); //Change Your Special Word 
  if IsNextInstance then
    UnRegisterThisInstance()
  else
  begin
    Application.Initialize;
    Application.CreateForm(TForm7, Form7);
    Application.Run;
  end;
end.


[인터넷 연결상태]
uses IdIcmpClient;


function Ping: Boolean;
var
  IcmpClient: TIdIcmpClient;
begin
  IcmpClient:= TIdIcmpClient.Create(Nil);
  IcmpClient.ReceiveTimeout:= 1000; // 1~3초 사이면 충분 합니다.
  IcmpClient.Host:= '74.125.128.94'; // 구글 아이피로 설정 해뒀고 다른데 쓰셔도 됩니다.
  IcmpClient.PacketSize:= 24;
  try
    IcmpClient.Ping;
    if IcmpClient.ReplyStatus.ReplyStatusType = rsEcho then
      Result:= true;
  finally
    IcmpClient.Free;
  end;
end;



[WebBrowser1]
WebBrowser1.OleObject.Document.all.item('name').value := 'dddd';  // 1.php 페이지에 있는 input 의 name에 값을 입력


[클립보드]
uses
  ClipBrd추가

ClipBoard.As Text : = Edit1.text;
Edit1.text := ClipBoard.As Text


[APP 선택]
SetForegroundWindow( WinHanlde );



[클래스명]
IEFrame
Chrome_WidgetWin_1

IE.Document.daumSearch.q.value := word82;
          IE.Document.daumSearch.submit();


 if WebBrowser1.OleObject.Document.all.tags('FORM').Length = 0 then


InnerText



procedure TForm1.Button1Click(Sender: TObject); 
var 
x: integer; 
thelink: OleVariant;

begin 
thelink:= WebBrowser1.OleObject.Document.all.tags('A'); 
if thelink.Length > 0 then 
  begin 
  for x := 0 to thelink.Length-1 do 
    begin 
    if Pos('put id string here', thelink.Item(x).id) > 0 then
      begin 
        thelink.Item(x).click; 
        Break;
      end;
    end;
  end;
end;



Item(x).className
 Doc.DOMDocument.getElementsByTagName('Element').length;  // = 11 




et oElement = oHtml.getElementsByClassName("myClass")
i = 0
While i < oElement.Length
    Debug.Print oElement(i).innerText
  i = i + 1
Wend


IE.Document.getElementsByClassName("detailValue")(0).innerText



GetElementByID


 links:=web.getElementsByClassName('a','btnlogin');
  for i := 0 to high(links) do begin
    if pos('Вход',links[i].innerText)>0 then begin
      links[i].click; break;
    end;




var
  Buttons: OleVariant;
  Button: OleVariant;
  I: Integer;
begin
  Buttons := WebBrowser1.OleObject.Document.getElementsByTagName("button");
  for I := 0 to Buttons.Length - 1 do
  begin
    Button := Buttons.item(I);
    if Button.innerText = 'Sign in' then
    begin
      Button.click();
      Break;
    end;
  end;
end;



rocedure TForm1.Button1Click(Sender: TObject);
var
  ovElements: OleVariant;
  i: Integer;
begin
  ovElements := WebBrowser1.OleObject.Document.forms.item(0).elements;
  for i := 0 to (ovElements.Length - 1) do
    if (ovElements.item(i).tagName = 'INPUT') and
      (ovElements.item(i).type = 'SUBMIT') and
  (ovElements.item(i).Value = 'Login') then
      ovElements.item(i).Click;
end;



          ovLinks1 := IE.Document.getElementsByClassName('gnb_wrap');
          ovLinks := ovLinks1.Item(0).all.tags('a');

[주소복사] https://www.goodsweb.kr/?u=D41MRH0K
SNS 알리기
핀터레스트
텔레그램로
블로그로
카카오스토리
카톡 공유

관련 블로그
로딩중


1명  IP : 18.224.♡.86
001 185.♡.171.15 웹,앱
(/bbs/board.php?amp%3Bwr_id=40&bo_table=develop)

접속자
  • 오늘 : 56
  • 어제 : 357
  • 최대 : 874
  • 전체 : 403,269

검색로봇(Robots) 최근 방문시간
  • GOOGLE : 11시간 전
  • NAVER : 21시간 전
  • DAUM : 1일 전
  • BING : 5일 전

ETH : 0x8abf3B748ab78828AE07685e4fd53d1a606f18D3



페이스북 네이버 블로그 굿스웹 쇼핑몰 네이버 카페 굿스웹 트위터 굿스웹 티스토리 Google Play