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&r=1&i=0000002d_0000001c9268&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');
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&r=1&i=0000002d_0000001c9268&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 알리기
핀터레스트
텔레그램로
블로그로
페이스북
트위터
카카오스토리
카톡 공유
관련 블로그
로딩중