본문 바로가기

삽질/Delphi40

[Delphi] Embeddedwb에서 Post로 보내기, User-Agent 보내기 쓸데없이 삽질했음.. var i: Integer; strData: string; Empty: OleVariant; Header: OleVariant; Post: OleVariant;begin strData := 'id=' + UserID + '&' + 'passwd=' + UserPW; // post 보낼 값 Post := VarArrayCreate([0, Length(strData) - 1], varByte); for i := 1 to Length(strData) do Post[i - 1] := Ord(strData[i]); Header := 'Content-type: application/x-www-form-urlencoded' + #10#13 + 'User-Agent: 여기넣기' + #10#13; .. 2016. 10. 18.
[Delphi] InnoSetup : 설치 전, 설치 후 함수 호출하기 [BeforeInstall] [Files]Source: "MYPROG.EXE"; DestDir: "{app}"; BeforeInstall: MyBeforeInstallSource: "A\MYFILE.TXT"; DestDir: "{app}"; BeforeInstall: MyBeforeInstall2('{app}\A\MYFILE.TXT') [AfterInstall] [Files]Source: "MYPROG.EXE"; DestDir: "{app}"; AfterInstall: MyAfterInstallSource: "A\MYFILE.TXT"; DestDir: "{app}"; AfterInstall: MyAfterInstall2('{app}\A\MYFILE.TXT') [Code]procedure MyBeforeI.. 2013. 8. 7.
[Delphi] InnoSetup : event 함수들 [Setup event functions] function InitializeSetup(): Boolean;Called during Setup's initialization. Return False to abort Setup, True otherwise.procedure InitializeWizard();Use this event function to make changes to the wizard or wizard pages at startup. You can't use theInitializeSetup event function for this since at the time it is triggered, the wizard form does not yet exist.procedure Deinitia.. 2013. 8. 7.
[Delphi] InnoSetup : 방화벽 추가 InnoSetup [Code] 부분에 이대로 추가하면 된다설치할때 추가하고 삭제할때 제거된다 검색해서 나오는 자료들은 죄다 예전 소스들이라 힘들었음 ㄱ- [Code] constNET_FW_SCOPE_ALL = 0;NET_FW_IP_VERSION_ANY = 2;NET_FW_ACTION_ALLOW = 1; procedure SetFirewallExceptionXP(AppName,FileName:string);var FirewallObject: Variant; FirewallManager: Variant; FirewallProfile: Variant;begin tryFirewallObject := CreateOleObject('HNetCfg.FwAuthorizedApplication');FirewallObje.. 2013. 8. 7.
[Delphi] InnoSetup : 설치/제거 할 때 프로그램 종료하기 InnoSetup [Code] 부분에 이렇게 넣으면 설치하거나 제거할 때 강제로 프로세스를 종료한다! [Code]constWM_CLOSE = $0010; // 프로그램 설치 시 function InitializeSetup: Boolean;varWnd: HWND;beginwhile(true) dobeginWnd := FindWindowByClassName('메인폼클래스명');if Wnd 0 thenbeginSendMessage(Wnd, WM_CLOSE, 0, 0);endelsebeginbreak;end;end; Result := True;end; // 프로그램 제거 시 function InitializeUninstall: Boolean;varWnd: HWND;beginwhile(true) dobeginWn.. 2013. 8. 7.
[Delphi] 윈도우 높은 권한에서 낮은 권한 메시지 받기 ChangeWindowMessageFilter 를 이용한다.이 소스 진짜 원 출처는 어딘지 모르겠지만 일단 적어놓기. type FCHANGEWINDOWMESSAGEFILTER = function(message: UINT; dwFlag: DWORD) : boolean; stdcall; procedure TForm.FormCreate(Sender: TObject);var h: HWND; MessageFilter: FCHANGEWINDOWMESSAGEFILTER;begin h := LoadLibrary('USER32.DLL'); if h 0 then begin try @MessageFilter := GetProcAddress(h, 'ChangeWindowMessageFilter'); if @MessageFil.. 2013. 8. 2.
[Delphi] 작업표시줄 시계부분 위치찾기 작업표시줄 위치에 상관없이시계부분에 팝업을 띄우기 위해서 var h: HWND; WorkRect: TRect; BarData: TAppBarData; begin h := FindWindowEx(FindWindow('Shell_TrayWnd', nil), 0, 'TrayNotifyWnd', nil); GetWindowRect(h, &WorkRect); BarData.HWND := 0; BarData.cbSize := sizeof(BarData); SHAppBarMessage(ABM_GETTASKBARPOS, BarData); case BarData.uEdge of 0: // ABE_LEFT begin self.Left := WorkRect.Right; self.Top := WorkRect.Bottom - .. 2013. 7. 30.
[Delphi] 작업표시줄 위치 찾기 uses shellapi; var pData: TAppBarData;begin pData.hWnd := 0; pData.cbSize := sizeof(pData); SHAppBarMessage(ABM_GETTASKBARPOS, pData); case pData.uEdge of 0: ShowMessage('ABE_LEFT'); 1: ShowMessage('ABE_TOP'); 2: ShowMessage('ABE_RIGHT'); 3: ShowMessage('ABE_BOTTOM'); end; end; 2013. 7. 22.
[Delphi] IdFTP 한글 인코딩 오류 기억력 나쁜 내가 또 까먹고 indy 업데이트 할까봐 급히 메모.. IdFTP.pas 수정하면 됨. 1) TIdFTP = class(TIdExplicitTLSClient)에 프로퍼티 하나 만들고 FUTFMode: boolean; property UTFMode : boolean read FUTFMode write FUTFMode; 2) 소스 수정 procedure TIdFTP.List(ADest: TStrings; const ASpecifier: string = ''; ADetails: Boolean = True); {do not localize}var LDest: TMemoryStream; LTrans : TIdFTPTransferType;begin if ADetails and UseMLIS and FC.. 2013. 4. 5.
[Delphi] StringGrid - Mouse move Cell hint procedure TFm_Test.AdvStringGridMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var ACol, ARow: Integer; begin AdvStringGrid.ShowHint := False; AdvStringGrid.MouseToCell(X, Y, ACol, ARow); if (ACol < 2) or (ARow < 1) then Exit; // fix and checkbox AdvStringGrid.ShowHint := True; AdvStringGrid.Hint := AdvStringGrid.Cells[ACol, ARow]; end; 2012. 1. 11.