Q&A

  • 진정 NT,XP 에서 자동종료는 불가능 한건가요?
아래소스는 민성기 님이 올려주신 winnt 자동종료 소스입니다.
그런데 아래소스를 이용해서 종료를 하면 "이제 윈도우의 전원을 끄도 됩니다."
하는 메세지가 나타나고 자동종료는 되지를 않습니다.

다른 종료 알람 프로그램으로는 제대로 종료가 되거든요.
그리고 시작버턴을 누르고 윈도우 종료를 선택해주면 역시 자동종료가 됩니다.

질답게시판을 뒤져보며 이렇게 저렇게 해봐도 되지를 않는군요.
델파이로는 자동종료가 불가능한가요?

잘아시는 분 계시면 답변 부탁드리겠습니다.

procedure SystemOffWindowsNT;
var
     PreviosPrivileges : ^TTokenPrivileges;
     TokenPrivileges   : TTokenPrivileges;
     ProcessHandle     : THandle;
     nTmp               : DWORD;
begin
     if not OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES + TOKEN_QUERY, ProcessHandle ) then
          Exit;

     LookupPrivilegeValue( '', 'SeShutdownPrivilege', TokenPrivileges.Privileges[0].Luid );
     TokenPrivileges.PrivilegeCount := 1;
     TokenPrivileges.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
     nTmp := 0;
     PreviosPrivileges := nil;

     AdjustTokenPrivileges( ProcessHandle, False, TokenPrivileges, 0, PreviosPrivileges^, nTmp );
     if not GetLastError() = ERROR_SUCCESS then
          Exit;
     if not InitiateSystemShutdown( '', '', 0, True, False ) then
          Exit;
     TokenPrivileges.Privileges[0].Attributes := 0;
     AdjustTokenPrivileges( ProcessHandle, False, TokenPrivileges, 0,PreviosPrivileges^, nTmp );
end;
1  COMMENTS
  • Profile
    양상훈 2002.08.16 12:57
    여기 게시판에서 찾아 사용하고 있는 코드입니다.
    XP에서 잘 실행됩니다.

    Procedure TForm1.WindowsShutDown;
    var
      hProc,hToken : THandle;
      mLUID : Int64;
      mPriv,mNewPriv : TTokenPrivileges;
    begin
      hProc := GetCurrentProcess();
      OpenProcessToken(hProc, TOKEN_ADJUST_PRIVILEGES + TOKEN_QUERY, hToken);
      LookupPrivilegeValue('', 'SeShutdownPrivilege', mLUID);
      mPriv.PrivilegeCount := 1;
      mPriv.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
      mPriv.Privileges[0].Luid := mLUID;
      AdjustTokenPrivileges(hToken, False, mPriv, 4 + (12 * mPriv.PrivilegeCount),
                            mNewPriv, mNewPriv.PrivilegeCount);
      ExitWindowsEx(EWX_POWEROFF, 0);
    end;
    • 김진옥
    • 2002.08.17 01:16
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 고지범
      2002.08.17 02:12
      메모리 포인터의 값이 이상해서 접근 불가로 나오는 듯 하네요... 가령 TMyClass 타입이 있다고 하면, ...
    • 김요한
      2002.08.17 01:48
      'Access violation'의 오류메세지는 File(다른 리소스일수도...)에 대한 접근 충돌이 대부분이지요. ...
    • 수서니
    • 2002.08.17 00:31
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 박성훈
      2002.08.17 00:46
      안녕하세요? 로그인 정보를 기억할 수 있는 레코드변수를 하나 선언하셔서 거기다가 집어넣으시면 간...
    • 1
    • 2002.08.17 00:16
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이민수
      2002.08.17 22:22
      프로젝트 시작하시고 걍 F9 누르시면 IDE에서 실행됩니다. F9:      &nb...
    • 이창환
      2002.08.17 05:24
      실행화일을 만들려면 Build All을 하셔야합니다. *^^* 즐거운 하루 *^^*
    • 전승곤
    • 2002.08.16 23:21
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 김성욱
    • 2002.08.16 22:49
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 최수림
    • 2002.08.16 22:45
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2002.08.16 22:58
      안녕하세요. 최용일입니다. 폴더를 크게 작게 한다는게 무슨 말인지 잘 모르겠네요... 혹시 이것 말...
    • 델델델
    • 2002.08.16 22:17
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 2002.08.16 21:21
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이창환
      2002.08.17 05:47
      맞을란가 모르겠는데요.. 혹시 윈도우 프린트설정에서 해당 프린터의 Custom Size의 크기를 확인해 보세요...
    • 최용일
      2002.08.16 22:18
      안녕하세요. 최용일입니다. Data속성은 컴포넌트의 Tag속성처럼 사용자가 마음대로 억세스 할 수 있는 ...
    • 스말(^___^)
      2002.08.16 22:36
    • 이현철
      2002.08.17 01:00
      Unix에 어떤 정의된 명령을 내리시려면, 기본적으로 C/S 프로그래밍이 들어갑니다. Unix 소켓 프로그...
    • 이종혁
    • 2002.08.16 20:13
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 2002.08.17 00:29
      OnCalcFields에서 하시면 될것 같네요. Query에 필드를 하나 추가하시고, 이벤트에 다음과같이 코딩해보세...
    • 티모니
      2002.08.16 20:19
      mssql에서 auto_increment 필드를 추가 시켜서 처리 하시거나.. 물론 이 방법은 레코드를 삭제하거나 하...
    • 최우영
    • 2002.08.16 20:09
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이충성
      2002.08.16 20:48
      //이미지 화일을 해당 이미지에 보여줄때... procedure JPEGLoadFromDB(BlobField: TBlobField; Image: TI...
    • 최우영
      2002.08.17 01:20
      많은 도움이 되었습니다. 그런데 제가 아시는분 중에도 이충성씨라고 계신데.. 설마 그분은 아니시겠죠? ...
    • 델사랑
    • 2002.08.16 20:02
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이현철
      2002.08.17 01:03
      메모리 상승에 관한것은, 개발 하실 경우에 객첵를 생성하였다가 제대로 종료하지 않을 경우에 많이 발...
    • 고지범
      2002.08.17 01:48
      저두 델파이 6를 XP 위에서 돌리고 있는 데.. 가끔 뜹니다... 암 생각 없이 델파이 죽였다가, 다시 실행 ...
    • 최용일
      2002.08.16 20:35
      안녕하세요. 최용일입니다. 자료실에 있습니다. 검색해보세요... ^^ 항상 즐코하세요...
    • 김수경
      2002.08.16 19:13
      Delphi Tips 1295    특정 문자로 나누기   1294   &...
    • 머슴
      2002.08.16 19:07
      자료가 규칙적으로 구성이 되어있으면 가장 간단한것은 Copy함수를 쓰시 면 됩니다... 한 문자열의 ...
    • 스말(^___^)
      2002.08.16 19:58
      DB에서 읽혀져서 TListView에 이름(날짜),이름2(날짜) 이런식으로 보여지는 자료라 전혀 일정하지가 않아...
    • 최용일
      2002.08.16 22:25
      안녕하세요. 최용일입니다. 일정한 (규칙이 있는) 자료인거 같은데요... ","로 구분되고 다음 "("를 만...
    • 스말(^___^)
      2002.08.16 22:42
    • 나옹이
    • 2002.08.16 15:00
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 양상훈
      2002.08.16 15:48
      Memo1에서 글자를 입력하고 영역을 선택하면 Button1이 Enabled 되고 Button1을 누르면 선택내용이 Memo...
    • 박희경
    • 2002.08.16 12:16
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 양상훈
      2002.08.16 12:57
      여기 게시판에서 찾아 사용하고 있는 코드입니다. XP에서 잘 실행됩니다. Procedure TForm1.WindowsSh...
    • 타이가
    • 2002.08.16 11:16
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 양상훈
      2002.08.16 13:18
      prompt>EXE aa.bmp aa.jpg   ParamCount = 2   ParamStr(0) = 'C:...EXE.exe' ...
    • 김성민
    • 2002.08.16 09:10
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김진태
      2002.08.16 11:00
      두가지가 있는데요. 실수로 리턴하는거랑 정수로 리턴하는것. trunc는 정수로 int는 실수로.. var a: I...