유돌이

calendar

1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

Notice

2010. 1. 11. 14:34 델파이

간단한 예제로 설명 할게요.

 

아래의 예제는 'F10'키를 HotKey로 등록하여

'F10'키가 눌리면 해당 프로그램이 종료가 되도록 코딩하였습니다.

 

//선언부

 procedure WMHotkey(var msg: TWMHotkey); message WM_HotKey;

 

 

//구현부

procedure TForm1.WMHotkey(var msg: TWMHotkey);
begin
  case msg.HotKey of
    1:
    begin
      OutPutDebugString('Program Exit');
      Form1.Close; // F10
    end;
  end;
end;

 

procedure TForm1.FormCreate(Sender: TObject);
begin
    RegisterHotKey(Handle, 1, 0, VK_F10);
end;

 

이상 간단한 팁이 였습니다. ㅋㅋ

posted by 유돌이
2010. 1. 11. 14:33 델파이

 For Windows 9x/ME/2000/XP }

uses
  Tlhelp32;

function KillTask(ExeFileName: string): Integer;
const
  PROCESS_TERMINATE = $0001;
var
  ContinueLoop: BOOL;
  FSnapshotHandle: THandle;
  FProcessEntry32: TProcessEntry32;
begin
  Result := 0;
  FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
  ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);

  while Integer(ContinueLoop) <> 0 do
  begin
    if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
      UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) =
      UpperCase(ExeFileName))) then
      Result := Integer(TerminateProcess(
                        OpenProcess(PROCESS_TERMINATE,
                                    BOOL(0),
                                    FProcessEntry32.th32ProcessID),
                                    0));
     ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
  end;
  CloseHandle(FSnapshotHandle);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  KillTask('notepad.exe');
end;

{ For Windows NT/2000/XP }

procedure KillProcess(hWindowHandle: HWND);
var
  hprocessID: INTEGER;
  processHandle: THandle;
  DWResult: DWORD;
begin
  SendMessageTimeout(hWindowHandle, WM_CLOSE, 0, 0,
    SMTO_ABORTIFHUNG or SMTO_NORMAL, 5000, DWResult);

  if isWindow(hWindowHandle) then
  begin
    // PostMessage(hWindowHandle, WM_QUIT, 0, 0);

    { Get the process identifier for the window}
    GetWindowThreadProcessID(hWindowHandle, @hprocessID);
    if hprocessID <> 0 then
    begin
      { Get the process handle }
      processHandle := OpenProcess(PROCESS_TERMINATE or PROCESS_QUERY_INFORMATION,
        False, hprocessID);
      if processHandle <> 0 then
      begin
        { Terminate the process }
        TerminateProcess(processHandle, 0);
        CloseHandle(ProcessHandle);
      end;
    end;
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  KillProcess(FindWindow('notepad',nil));
end;

 

 

 

[출처] [delphi]kill!!!|작성자 리우

'델파이' 카테고리의 다른 글

발생하기 쉬운 HTTP상태코드  (0) 2010.01.11
Hot Key 등록하는 방법  (0) 2010.01.11
한영 변환 방법  (0) 2010.01.11
Grid에 CheckBox 넣기  (0) 2010.01.11
중복 실행 방지 (Mutex)  (0) 2009.06.26
posted by 유돌이
2010. 1. 11. 14:33 델파이

{---------------------------}
{      영문입력상태 만들기           }
{---------------------------}
procedure SetEng(Hand: HWnd);
var
  hIMC: integer;
  dwSentence : DWORD;
  dwConversion : DWORD;

begin
   hIMC := ImmGetContext(Hand);
   if ImmGetConversionStatus(hIMC, dwConversion, dwSentence) then begin
     dwConversion := dwConversion and $fffffffe;
     ImmSetConversionStatus(hIMC, dwConversion , dwSentence);
   end;
end;

{---------------------------}
{       한글 입력상태  만들기        }
{---------------------------}
procedure SetHan(Hand: HWnd);
var
  hIMC: integer;
  dwSentence : DWORD;
  dwConversion : DWORD;

begin
   hIMC := ImmGetContext(Hand);
   if ImmGetConversionStatus(hIMC, dwConversion, dwSentence) then
     ImmSetConversionStatus(hIMC, IME_CMODE_NATIVE, dwSentence);
end;

 

 

출처 : 볼랜드포럼  (작성자: 문성운 [moon9424] )


'델파이' 카테고리의 다른 글

Hot Key 등록하는 방법  (0) 2010.01.11
실행프로그램(task,태스크) 죽이기  (0) 2010.01.11
Grid에 CheckBox 넣기  (0) 2010.01.11
중복 실행 방지 (Mutex)  (0) 2009.06.26
Caps Lock 체크 하는 방법  (0) 2009.06.26
posted by 유돌이
2010. 1. 11. 14:32 델파이

간단한 예제로 만들어 봤습니다.

 

참고하세요.

 

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids, JvExGrids, JvStringGrid;

type
  TForm1 = class(TForm)
    JvStringGrid1: TJvStringGrid;
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
    procedure CheckBoxKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
    procedure CheckBoxMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: integer);
    procedure OnClickEx(Sender: TObject);
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  r : TRect;
  i, j: integer;

begin
  i := 1;
  for j:=1 to JvStringGrid1.RowCount - 1 do
  begin
    JvStringGrid1.Objects[i, j] := TCheckBox.Create(JvStringGrid1);

    with TCheckBox(JvStringGrid1.Objects[i, j]) do
    begin
      OnKeyUp   := CheckBoxKeyUp;
      OnMouseUp := CheckBoxMouseUp;
      Tag    := j;
      Hint   := IntToStr(i);
      Parent := JvStringGrid1;
      r := JvStringGrid1.CellRect(i, j);
      BoundsRect := r;
      Top := r.Top;
      Width := r.Right - r.Left - 25;
      Left := r.Left + 25;
      Height := r.Bottom - r.Top;
      Checked := False;
      Caption := '';
    end;
  end;
end;

procedure TForm1.CheckBoxMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: integer);
begin
  if not TCheckBox(Sender).Checked then
  begin
    JvStringGrid1.Row := TCheckBox(Sender).Tag;
    JvStringGrid1.Col := StrToInt(TCheckBox(Sender).Hint);
    JvStringGrid1.Cells[JvStringGrid1.ColCount -1, JvStringGrid1.Row] := 'False';
  end else begin
    JvStringGrid1.Row := TCheckBox(Sender).Tag;
    JvStringGrid1.Col := StrToInt(TCheckBox(Sender).Hint);
    JvStringGrid1.Cells[JvStringGrid1.ColCount -1, JvStringGrid1.Row] := 'True';
    OnClickEx(JvStringGrid1);
  end;
end;

procedure TForm1.CheckBoxKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  if Key <> VK_SPACE then
  begin
    Exit;
  end else if not TCheckBox(Sender).Checked then
  begin
    Exit;
  end else begin
    JvStringGrid1.Row := TCheckBox(Sender).Tag;
    JvStringGrid1.Col := StrToInt(TCheckBox(Sender).Hint);
    OnClickEx(JvStringGrid1);
  end;
end;

procedure TForm1.OnClickEx(Sender: TObject);
begin
  Memo1.Lines.Add('ROW: ' + IntToStr(JvStringGrid1.Row));
end;

end.


'델파이' 카테고리의 다른 글

실행프로그램(task,태스크) 죽이기  (0) 2010.01.11
한영 변환 방법  (0) 2010.01.11
중복 실행 방지 (Mutex)  (0) 2009.06.26
Caps Lock 체크 하는 방법  (0) 2009.06.26
현재 날짜 구하는 함수  (0) 2009.06.26
posted by 유돌이
2009. 6. 26. 14:03 델파이

프로그램이 이미 실행된 상태에서
동일한 프로그램이 중복 실행되는 것을 방지하려면

프로젝트 소스 파일에서 다음과 같이 코딩합니다.

program Project;

uses
Forms,windows,
Unit1 in 'Unit1.pas' {Form1};

var
Mutex : THandle;

{$R *.RES}

begin
  Mutex := CreateMutex(nil, True, 'noDuplicate');
  if (Mutex <> 0 ) and (GetLastError = 0) then

  begin
    Application.Initialize;
    Application.CreateForm(TForm1, Form1);
    Application.Run;
   

    if Mutex <> 0 then CloseHandle(Mutex);
  end;
end.


'델파이' 카테고리의 다른 글

한영 변환 방법  (0) 2010.01.11
Grid에 CheckBox 넣기  (0) 2010.01.11
Caps Lock 체크 하는 방법  (0) 2009.06.26
현재 날짜 구하는 함수  (0) 2009.06.26
델파이 단축키  (0) 2009.06.26
posted by 유돌이
2009. 6. 26. 14:03 델파이

예제로 설명해 드리면 아래와 같습니다.

 

 

if GetKeyState(VK_CAPITAL)=1 then

begin

   ShowMessage('Caps Lock Key On');
end else begin

   ShowMessage('Caps Lock Key Off');

end;

GetKeyState 함수를 이용하시면 위의 예제외에도 다른 키입력 상태도 알아 낼수 있습니다.

 

자세한 내역은 MSDN 이나 구글서핑을 참고 하시길..ㅎ


'델파이' 카테고리의 다른 글

Grid에 CheckBox 넣기  (0) 2010.01.11
중복 실행 방지 (Mutex)  (0) 2009.06.26
현재 날짜 구하는 함수  (0) 2009.06.26
델파이 단축키  (0) 2009.06.26
델파이에서 case문 사용방법  (0) 2009.06.26
posted by 유돌이
2009. 6. 26. 14:02 델파이
now는 현재의 년 달 날짜 시간 까지 리턴해주는 함수고

formatDatetime함수를 이용해서 string으로 변환 할 수 있습니다.
 
 
(예제) 
   NowDate := formatDateTime('yyyy-mm-dd',now);

'델파이' 카테고리의 다른 글

중복 실행 방지 (Mutex)  (0) 2009.06.26
Caps Lock 체크 하는 방법  (0) 2009.06.26
델파이 단축키  (0) 2009.06.26
델파이에서 case문 사용방법  (0) 2009.06.26
한글문자를 초성, 중성, 종성으로 나누기  (0) 2009.06.26
posted by 유돌이
2009. 6. 26. 14:02 델파이
폼 디자이너
Ctrl + 방향키(←↑→↓)            : 컴포넌트 위치 이동
Shift + Ctrl + 방향키(←↑→↓)    : 컴포넌트 위치 이동(빠르게)
Shift + 방향키(←↑→↓)           : 컴포넌트 크기 변경
선택 후 ESC                        : Parent컴포넌트로 이동
폼위에 수 많은 판넬들로 이루어진데서 속에 숨어있는 컴포넌트는 앞으로 보이게 하기
메뉴 -> Edit -> Bring to Front

오브젝트 인스펙터
Ctrl + ↓                          : 컴포넌트 선택기 팝업
(팝업 후 알파벳 문자 입력하여 해당 컴포넌트로 이동 가능)
Alt + ↓                           : Property Combo 선택기 팝업
(팝업 후 알파벳 문자 입력하여 해당 컴포넌트로 이동 가능)
Ctrl + Enter                       : 열거형 Property값을 다음 값으로 변경
+선택 후, ←,→                    : 하위 Property펼치기,접기
Ctrl + Tab                         : Properties,Events탭 전환
..선택 + Ctrl + Enter              : Property Editor 열기
Tab                                : Property Name/Value토글

소스코드 에디터
Ctrl + F : 문자열 찾기
Ctrl + R : Replace
F3  : Search Again

Ctrl + Enter                       : 현재위치의 단어로 File Open 시도, 현재 Path 에서 찾지 못하면 Dialog
Ctrl + S                           : 파일 저장
Ctrl + F4                          : 파일 닫기
Ctrl + Shift + C                   : Method/Procedure/Property자동생성

노가다 작업시 정말 유용한 키매크로 기능

Ctrl + Shift + R Record  * 키매크로 작성순서 :  <Ctrl+Shift+R> -> <원하는키> -> <Ctrl+Shift+R>
Ctrl + Shift + P Play


(커서 이동에 관한 단축키)
Ctrl + ←,→                       : 이전 단어, 다음 단어
Ctrl + Shift + ←,→               : 이전 단어, 다음 단어까지 블럭
Ctrl + Home                        : 소스코드 맨 앞으로 이동
Ctrl + End                         : 소스코드 맨 뒤로 이동
Ctrl + Shift + ↑(↓)              : 선언부,구현부 상호간 이동
Ctrl + PageUp                      : 현재 화면의 맨 윗줄로 이동
Ctrl + PageDown                    : 현재 화면의 맨 아랫줄로 이동
Alt + {, }                         : '{'괄호 앞,뒤에서 사용. 짝 찾기.
(), {}, [] 이런 괄호 의 앞부분에 가서 alt + [ 키를 누르면 해당 괄호의 끝으로 간다.
Ctrl + Q + P : 이동하기 전의 위치로 다시 이동
Ctrl + Q + B : 블럭 제일 앞으로 이동
Ctrl + Q + K : 블럭 제일 밑으로 이동
작업하다가 다시 작업하던 곳으로 오려면 북마크를 이용하는 수 밖에 없겠다.
Ctrl + k + 0 : 북마크 0 이 된다. 더 추가 하려면 0 대신에 1~9 까지 있다.
해제 하려면 똑같이 Ctrl + k + 0 를 한번더 하면 된다.
Ctrl + 0 : 북마크 0 으로 돌아 온다. 0~9까지 있다.


(블럭에 관한 단축키)
Shift + Home                       : 현재 라인 맨 앞까지 블럭
Shift + End                        : 현재 라인 맨 뒤까지 블럭
Shift + Alt + 방향키(←↑→↓)     : 블록 사각형 지정, 칸단위 블럭 설정
Ctrl + KL                          : 캐럿이 Line Home에 있을 때, Line 블럭
Ctrl + T                           : 현재 위치에서 단어 마지막 부분까지 삭제
Ctrl + I                           : 블럭 지정된 문자를 공백으로 변환

Ctrl + N                           : 다음 Line 맨 앞으로 줄바꿈
Ctrl + M                           : 줄바꿈
Alt + BackSpace                    : 실행 취소 (Undo)
Ctrl + E                           : 알파벳이나 숫자를 누르면 현재 위치에서 밑에 해당 키의 문자가 있는 곳으로 이동한다.
Ctrl + ↑(↓)                      : 캐럿 고정 스크롤
Ctrl + O + U : 대문자 -> 소문자, 소문자 -> 대문자
Ctrl + Shift + U : 왼쪽으로 땡기기
Ctrl + Shift + I : 오른쪽으로 땡기기

editor Properties 에 들어 가서 general 메뉴에서 Block indent 에서 얼만큼 땡길건지 크기를 조절할 수 있다.

shift + Ctrl + G : OLE interface 에 사용되는 GUID를 랜덤으로 만들어서 삽입해 준다.
CTRL + OO : 현재 유닛의 맨 앞 부분에 여러 가지 컴파일러 지시자를 삽입해 준다.


코드탐색기
F2                                 : 이름 변경하기(Uses제외)
DoubleClick                        : 소스코드 탐색기의 해당 코드로 이동
Ctrl + Shift + E                   : 탐색기<->에디터 창 이동



코드 인사이트(Code Insight)
Ctrl + Space                       : 코드완성 마법사
Ctrl + Shift                       : 메소드 파라미터 팁
메소드의 이름을 입력하고 괄호를 입력한 다음에 잠시 기다리면 해당 메소드의 파미터구조가 힌트형태로 보여진다. Ctrl + shift 를 누르면 똑 같은 기능을 한다.
Ctrl + J                           : 코드 템플릿 사용
툴팁수식평가 디버깅시 수식이 나타나지 않을 경우
Project -> Options 메뉴에 Compiler 페이지에서 Optimization 체크박스를 해제하면 된다.


       
기타 기능
Alt + F10                          : 현재 위치에서 Popup-Menu 띄우기
F11                                : View Object Inspector
F12                                : Toggle Form/Unit
Alt + 0                            : View Window List
Ctrl + F12                         : View Unit
Shift + F12                        : View Form

컴파일/실행
Ctrl + F9  : Compile
F9  : Run
F7  : Trace Into
F8  : Trace Over
F5  : Set Breakpoint
Ctrl + F5 : Add Watch
Ctrl + F7 : Evaluate/Modif


posted by 유돌이
2009. 6. 26. 14:01 델파이

간단한 예제로 설명을 대신할게요.

참고 하세여...

 

function TestCase(s: string): boolean;
var 
  
i: Integer;
begin
  
Result := False;
  for i := 1 to Length(s) do
    case 
s[i] of
      
'0'..'9':; //각각 사용 용도에 맞게 처리 ..
      else 
        
Exit;  //그외 디폴트 처리..
    end;
  Result := True;
end;

 

 

참 쉽죠잉..ㅎㅎ


posted by 유돌이
2009. 6. 26. 14:01 델파이

function DivHan(Han : String) : String;
const
    ChoSung: WideString = 'ㄱㄲㄴㄷㄸㄹㅁㅂㅃㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎ';
    JungSung: WideString = 'ㅏㅐㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅣ';
    JongSung: WideString = ' ㄱㄲㄳㄴㄵㄶㄷㄹㄺㄻㄼㄽㄾㄿㅀㅁㅂㅄㅅㅆㅇㅈㅊㅋㅌㅍㅎ';
var
  i : Integer;
  Temp : WideString;
  WC : Integer;
  IntChoSung, IntJungSung, IntJongSung : Integer;

begin
    Temp := Han;
  for i := 1 to Length(Temp) do
  begin
      WC := Ord(Temp[i]) - $AC00;
    IntChoSung := WC div (21 * 28);
    IntJungSung := (WC Mod (21 * 28)) div 28;
    IntJongSung := WC mod (21 * 28) mod 28;
    Result := Result + ChoSung[IntChoSung + 1] + JungSung[IntJungSung + 1] + JongSung[IntJongSung + 1];
  end;
end;

 

 

예제)

 

procedure TAutoManinForm.Button1Click(Sender: TObject);

begin
  EditHanGul2.Text := DivHan(EditHangle.Text);
end;


'델파이' 카테고리의 다른 글

델파이 단축키  (0) 2009.06.26
델파이에서 case문 사용방법  (0) 2009.06.26
Enter 입력시 Tab효과 주기 In DELPHI  (0) 2009.06.26
StringGrid -> 엑셀 파일로 변환하기  (0) 2009.06.26
엑셀(Excel) 제어하기  (0) 2009.06.26
posted by 유돌이
prev 1 2 3 4 5 6 7 ··· 9 next