Q&A
HOME
Tips & Tech
Q&A
Discuss
Download
자유게시판
홍보 / 광고
구인 / 구직
LOGIN
회원가입
윈도우 시작키를 제어하는 방법 있나요?..Plz..
안녕하세요..
프로그램특성상 윈도우즈에서 사용하는 키들을 후킹으로 막고있는데
윈도우 시작키만은 이거 제어하기 상당히 힘드네요..
(흠..왜이리 막아야되는 키가 많은지..ctrl+alt+del..alt+f4..alt+tab..)
윈도우 시작키(ctrl+Esc:같은기능을하죠) 에 전혀 반응하지못하도록 할수있는지
-시작화면조차도 안보이게-
답변 부탁드립니다..
1
COMMENTS
김영대
•
1999.10.22 23:02
조복기 wrote:
>
> 안녕하세요..
> 프로그램특성상 윈도우즈에서 사용하는 키들을 후킹으로 막고있는데
> 윈도우 시작키만은 이거 제어하기 상당히 힘드네요..
> (흠..왜이리 막아야되는 키가 많은지..ctrl+alt+del..alt+f4..alt+tab..)
> 윈도우 시작키(ctrl+Esc:같은기능을하죠) 에 전혀 반응하지못하도록 할수있는지
> -시작화면조차도 안보이게-
> 답변 부탁드립니다..
// 아래 소스는 Ctrl-Alt-Del, Alt-Tab, Ctrl-Esc 입력을 막고 푸는 소스입니다
// 또한 "시작" 버튼을 화면에 나타나지 않게 하거나 또는 Disabled 시키는
// 루틴도 포함되어 있습니다
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure DlsableStartButton(Force: Boolean);
begin
if Force then
EnableWindow(FindWindowEx(FindWindow('Shell_TrayWnd',nil),0,'Button',nil), False)
else
EnableWindow(FindWindowEx(FindWindow('Shell_TrayWnd',nil),0,'Button',nil), True);
end;
procedure hideStartbutton(visi: boolean);
var
Tray, Child: HWnd;
c: array [0..127] Of Char;
s: String;
Begin
// 윈도우즈 task bar 의 핸들을 찾는다
Tray := FindWindow('Shell_TrayWnd', nil);
// task bar의 child들 중에서 button 핸들을 찾는다
Child := GetWindow(Tray, GW_CHILD); // task bar의 child 핸들중 하나를 리턴
while Child <> 0 Do
begin
// windows의 클래스명을 구해서 Button 이면...
if GetClassName(Child, c, SizeOf(c)) > 0 Then
Begin
s := StrPas(c);
if UpperCase(s) = 'BUTTON' Then
begin
if visi Then
ShowWindow(Child, 1) // 보이기
else
ShowWindow(Child, 0); // 감추기
end;
end;
// 만약 Button 윈도우를 찾지 못하면 sibling 윈도우를 찾는다
Child := GetWindow(Child, GW_HWNDNEXT);
end
end;
procedure TForm1.Button1Click(Sender: TObject);
var
dummy : integer;
begin
SystemParametersInfo( SPI_SCREENSAVERRUNNING, 1, @dummy, 0);
// "시작" 버튼 감추기
hideStartbutton(False);
// "시작" 버튼 Disable
// DlsableStartButton(True);
end;
procedure TForm1.Button2Click(Sender: TObject);
var
dummy : integer;
begin
SystemParametersInfo( SPI_SCREENSAVERRUNNING, 0, @dummy, 0);
// "시작" 버튼 보이기
hideStartbutton(True);
// "시작" 버튼 Enable
// DlsableStartButton(False);
end;
end.
0
0
삭제
수정
댓글
(NOTICE) You must be
logged in
to comment on this post.
한근수
•
1999.10.22 22:49
1
COMMENTS
/
0
LIKES
[급]테이블 필드명을 에디트 박스에 옮기기.
오승섭
•
1999.10.22 23:28
안녕하세요 .... 먼저 4개의 Edit Component의 이름을 Edit1, Edit2, Edit3, Edit4라고 하고요. Table...
최종오
•
1999.10.22 21:35
1
COMMENTS
/
0
LIKES
Real에서 String으로 형변환을 하고 싶습니다.
이정욱
•
1999.10.22 22:23
FloatToStr 이란 함수가 있습니다. 최종오 wrote: > Real에서 String 으로 형 변환을 하고 싶습니다. ...
문영철
1999.10.22 19:56
0
COMMENTS
/
0
LIKES
환율,주가정보를 accept 받는 방법
김경율
•
1999.10.22 19:53
1
COMMENTS
/
0
LIKES
한글 입력 키값을 알려면???
권경부
•
1999.10.22 20:08
김경율 wrote: > 제가 이번에 간단한 타자 연습기를 만들려고 하는 데 > 한글자판 에서 ㄱ,ㄴ,ㄷ 이런식...
이용호
•
1999.10.22 19:43
1
COMMENTS
/
0
LIKES
file 이동에 관해서...
김영대
•
1999.10.22 22:19
이용호 wrote: > 제가 server->client->server 이런 식으로 file을 이동시키려고 합니다. > 화일 이동하...
박성훈
1999.10.22 18:32
0
COMMENTS
/
0
LIKES
TCollection객체사용중에러가 나는데요
전용규
•
1999.10.22 18:28
1
COMMENTS
/
0
LIKES
Midas client 배포
김영대
•
1999.10.22 22:18
> 3 Tier로 작성된 client application을 배포하고자 할때 Application Server > 에서 사용하는 통신 prot...
조창범
•
1999.10.22 18:10
1
COMMENTS
/
0
LIKES
데이타베이스의 선택?
이정욱
•
1999.10.22 22:25
상용DB엔진인 아폴로를 사용해 보세요. 아폴로는 C/S버전도 따로 있습니다. 아폴로 C/S버전의 특징은 추...
정용석
•
1999.10.22 09:22
1
COMMENTS
/
0
LIKES
일정관리 프로그램을 만들려고 합니다.
김영대
•
1999.10.22 22:33
정용석 wrote: > 안녕하세요.. > 다름이 아니라 일정관리 프로그램을 아주 간단히 만들려고 합니다. > ...
안재현
•
1999.10.22 05:22
2
COMMENTS
/
0
LIKES
MS-SQL 7.0에서 decimal field 문제
최수영
•
1999.10.22 17:50
안재현 wrote: > 안녕하십니까? > 델파이를 이용하여 업무 프로그램을 개발 중입니다. > 숫자가 들어가...
안재현
•
1999.10.22 18:54
최수영 wrote: > 이상하네요! 저흰 사이베이스 11.0.2.2 For NT를 사용합니다! float라는 것은 > 정확...
홍세비
1999.10.22 04:41
0
COMMENTS
/
0
LIKES
TAPI함수를 사용하려면....
최영국
1999.10.22 04:11
0
COMMENTS
/
0
LIKES
dll내의 폼에서 호출폼의 TDatabase 공유하기
김종석
•
1999.10.22 03:49
2
COMMENTS
/
0
LIKES
랜 으로 연결된 컴의 파일을 읽어오고 싶어요...살려주세요
문영철
•
1999.10.22 19:08
다음 예제를 보면 이해가 되실겁니다. readme.txt를 특정화일이름으로 바꾸시면 화일종류에 맞게 오픈이됩...
최영국
•
1999.10.22 04:27
참 저도 한참 초보인데 이런 질문에 답을 한다고 덤벼들다니 정말 부끄럽습니다. 그런데 질문하신 내용만...
이화
•
1999.10.22 03:19
2
COMMENTS
/
0
LIKES
db에서 이미지 저장하는 방법 알려주세요...
이재식
•
1999.10.23 02:51
이화 wrote: > db는 파라독스 이구요.. > > 소스를 어떻게 해야 할지 몰라서.. > > 예) > begin >...
김영대
•
1999.10.22 22:37
이화 wrote: > db는 파라독스 이구요.. > > 소스를 어떻게 해야 할지 몰라서.. > > 예) > begin >...
모영찬
•
1999.10.22 02:47
1
COMMENTS
/
0
LIKES
프린트(PRINT)시 폰트 지정을 어케하나요?
김영대
•
1999.10.22 22:41
모영찬 wrote: > 안녕하십니까... > > 제가 프린터로 삼보 스타일러스에 출력하려고 합니다. > 그리고...
조복기
•
1999.10.22 02:08
1
COMMENTS
/
0
LIKES
윈도우 시작키를 제어하는 방법 있나요?..Plz..
안녕하세요.. 프로그램특성상 윈도우즈에서 사용하는 키들을 후킹으로 막고있는데 윈도우 시작키만은 이거 제어하기 상당히 힘드네요.. (흠..왜이리 막아야되는 키가 많은지..ctrl+alt+del..alt+f4..alt+tab..) 윈도우 시작키(ctrl+Esc:같...
김영대
•
1999.10.22 23:02
조복기 wrote: > > 안녕하세요.. > 프로그램특성상 윈도우즈에서 사용하는 키들을 후킹으로 막고있는데...
하윤철
1999.10.22 02:31
0
COMMENTS
/
0
LIKES
델파이로 엑셀 다루기를 OLE 말고 COM으로...
조창범
•
1999.10.21 23:13
1
COMMENTS
/
0
LIKES
시간이 변하지 않네요...
권경부
•
1999.10.22 02:33
조창범 wrote: > 제가 STATUSBAR 콤포넌트에 시계를 볼수 있게끔 Time을 써주었는데.. > 처음 실행시켰을...
박경환
1999.10.21 22:51
0
COMMENTS
/
0
LIKES
Ics에서 한글사용법좀 ...
델초보
•
1999.10.21 21:13
1
COMMENTS
/
0
LIKES
[재질문]messagedlg....
권경부
•
1999.10.22 02:47
델초보 wrote: > 폼이 있고...상위에 작은 폼이 있어요... > 그 상위폼에서 messagedlg를 부르고 yes나 n...
조복기
1999/10/22 02:08
Views
775
Likes
0
Comments
1
Reports
0
Tag List
수정
삭제
목록으로
한델 로그인 하기
로그인 상태 유지
아직 회원이 아니세요? 가입하세요!
암호를 잊어버리셨나요?
>
> 안녕하세요..
> 프로그램특성상 윈도우즈에서 사용하는 키들을 후킹으로 막고있는데
> 윈도우 시작키만은 이거 제어하기 상당히 힘드네요..
> (흠..왜이리 막아야되는 키가 많은지..ctrl+alt+del..alt+f4..alt+tab..)
> 윈도우 시작키(ctrl+Esc:같은기능을하죠) 에 전혀 반응하지못하도록 할수있는지
> -시작화면조차도 안보이게-
> 답변 부탁드립니다..
// 아래 소스는 Ctrl-Alt-Del, Alt-Tab, Ctrl-Esc 입력을 막고 푸는 소스입니다
// 또한 "시작" 버튼을 화면에 나타나지 않게 하거나 또는 Disabled 시키는
// 루틴도 포함되어 있습니다
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure DlsableStartButton(Force: Boolean);
begin
if Force then
EnableWindow(FindWindowEx(FindWindow('Shell_TrayWnd',nil),0,'Button',nil), False)
else
EnableWindow(FindWindowEx(FindWindow('Shell_TrayWnd',nil),0,'Button',nil), True);
end;
procedure hideStartbutton(visi: boolean);
var
Tray, Child: HWnd;
c: array [0..127] Of Char;
s: String;
Begin
// 윈도우즈 task bar 의 핸들을 찾는다
Tray := FindWindow('Shell_TrayWnd', nil);
// task bar의 child들 중에서 button 핸들을 찾는다
Child := GetWindow(Tray, GW_CHILD); // task bar의 child 핸들중 하나를 리턴
while Child <> 0 Do
begin
// windows의 클래스명을 구해서 Button 이면...
if GetClassName(Child, c, SizeOf(c)) > 0 Then
Begin
s := StrPas(c);
if UpperCase(s) = 'BUTTON' Then
begin
if visi Then
ShowWindow(Child, 1) // 보이기
else
ShowWindow(Child, 0); // 감추기
end;
end;
// 만약 Button 윈도우를 찾지 못하면 sibling 윈도우를 찾는다
Child := GetWindow(Child, GW_HWNDNEXT);
end
end;
procedure TForm1.Button1Click(Sender: TObject);
var
dummy : integer;
begin
SystemParametersInfo( SPI_SCREENSAVERRUNNING, 1, @dummy, 0);
// "시작" 버튼 감추기
hideStartbutton(False);
// "시작" 버튼 Disable
// DlsableStartButton(True);
end;
procedure TForm1.Button2Click(Sender: TObject);
var
dummy : integer;
begin
SystemParametersInfo( SPI_SCREENSAVERRUNNING, 0, @dummy, 0);
// "시작" 버튼 보이기
hideStartbutton(True);
// "시작" 버튼 Enable
// DlsableStartButton(False);
end;
end.