2011-09-22 2 views
0

내가 C++ 응용 프로그램에서 PC를 켤 수 없으므로 이 작업을 수행 할 수있는 방법이 있습니까? 감사합니다.C++ 응용 프로그램 기능으로 컴퓨터를 켤 수있는 방법이 있습니까?

+5

컴퓨터가 꺼져있는 경우 응용 프로그램이 어떻게 실행됩니까? 아니면이 장치가 원격입니까? –

+0

물건의 전면에있는 버튼이나 벽에있는 스위치를 누를 수있는 기능을 생각할 수 없습니다. –

+0

어떤 운영 체제를 사용하고 있습니까? ACPI에는 주어진 시간에 컴퓨터 전원을 켜는 기능이 있으며,/proc/acpi/alarm을 통해이 시간을 설정하는 옵션이 있습니다. 나는 창문 아래에서 이것이 어떻게 작동하는지 모르겠다. – jdm

답변

5

컴퓨터가 꺼져 있으면 코드를 실행할 수 없으므로 프로그래밍 방식으로 켜지 지 않습니다.

ACPI 다소 변경되었지만 도움을 받으려면 정확한 요구 사항을 구체적으로 밝혀야합니다.

다른 컴퓨터를 켜야 할 경우 Wake-on-LAN을 살펴보십시오.

+0

2002 년 대부분의 PC 하드웨어 타이머를 설정할 수있는 ACPI가 있어야합니다. 컴퓨터가 꺼져 있어도 메인 보드는 실제로 네트워크 카드에 전원을 공급하거나 키보드 입력 (대기 모드 또는 키보드 깨우기 등)을 기다리거나 타이머를 기다리는 데 약간의 전원을 공급합니다. 불행히도 내 경험에 따르면이 기능은 시도 할 때 그다지 신뢰할만한 기능이 아니지만 지금은 변경되었을 수도 있습니다. – jdm

+0

저는 PC의 BIOS에서 매일 평일에 PC를 켜도록 타이머를 구성했습니다. 정상적으로 작동하고 안정적으로 작동합니다. –

1

strip을 사용하십시오. Windows 컴퓨터를 켜야 할 경우 교차 도구 i686-w64-mingw32-strip 또는 x86_64-w64-mingw32-strip을 사용해야합니다. 이러한 명령 줄 프로그램은 실행 파일을 수정하며 결과는 컴퓨터를 켤 수 있습니다.

+0

이것은 무엇이든지간에 아무런 관련이 없습니다 ... – jdm

+6

예,하지만 그 농담의 기회는 너무 좋았습니다. – thiton

+1

hahaha - 나에게 1 분 걸렸어 ... 아주 좋아 .. :) – Nim

1

시스템 종료시 프로세스가 실행되고 있지 않을 때 어떻게 응용 프로그램에서 컴퓨터를 켤 수 있습니까? 실행중인 컴퓨터가 아닌 다른 컴퓨터 (Wake on Lan)를 켤 수 있습니다.

3

프로그램 자체가 설치되어있는 컴퓨터를 켜기위한 프로그램을 작성할 수 없습니다.

다른 컴퓨터를 켤 응용 프로그램을 작성해야한다면 Wake-on-LAN이 당신을위한 도구입니다. 최신 데스크톱에는 컴퓨터가 S5 상태 인 경우에도 항상 전원을 공급받는 NIC가 있습니다. BIOS가이를 지원하고 활성화되었다고 가정합니다.

Wake-On-LAN은 Magic Packet을 NIC에 보내서 작동합니다. 페이로드의 세부 내용은이 기사에서 설명합니다.

0

가능합니다.

먼저 Wake On Lan을 구성해야합니다. Lifehacker에서이 작업 수행 방법에 대한 게시물을 확인하십시오 : http://lifehacker.com/348197/access-your-computer-anytime-and-save-energy-with-wake+on+lan.

(또는이 링크 : http://hblg.info/2011/08/21/Wake-on-LAN-and-remote-login.html)

그런 다음 당신은 당신의 C++ 응용 프로그램에서 매직 패킷을 보내야합니다. 이미 자바 스크립트 (wakeonlan.me)에서이 작업을 수행하는 여러 웹 서비스가 있지만 C++ 응용 프로그램 내에서 수행 할 수도 있습니다.

2

이것은 아마도 C#: How to wake up system which has been shutdown? (아마도 C#이지만)의 복제본 일 수 있습니다.

CreateWaitableTimer()으로 타이머를 만들고 SetWaitableTimer()으로 시간을 설정 한 다음 WaitForSingleObject()을 수행하는 것이 좋습니다. 코드가 일시 중지되고 컴퓨터를 대기 모드로 설정할 수 있습니다 (최대 절전 모드 일 수도 있지만 시스템 종료 모드가 아닐 수도 있음). 타이머에 도달하면 PC가 재개되고 프로그램도 재개됩니다.

C의 전체 예제는 here을 참조하십시오.이 예에서는 타이머의 시간 차이를 계산하는 방법과 스레드에서 대기를 수행하는 방법을 보여줍니다 (그래픽 응용 프로그램을 작성하는 경우).

내가 추가해야하는 Windows 작업 스케줄러 ('이 작업을 실행하기 위해 컴퓨터 깨우기')를 사용하여 컴퓨터를 깨우도록 예약 할 수도 있습니다. 이것은 컴퓨터가 종료 될 때도 가능합니다. 컴퓨터 BIOS에 깨우기 시간을 설정하는 옵션도 있습니다.(메인 보드

echo 2006-02-09 23:05:00 > /proc/acpi/alarm 

참고 나는이 모든 테스트하지 않았습니다, 그리고 하드웨어에 크게 의존 :

리눅스에서, 당신은 특수 파일로 작성하여 일어나 컴퓨터를 설정할 수 있습니다). 그러나 모든 종류의 깨우기는 모든 최신 PC에서 사용할 수 있어야합니다.

은 참조 : http://www.dennisbabkin.com/wosb/

+1

CreatewaitableTimer가 정답입니다. SetWaitableTimer에 대한 fResume 인수를 TRUE로 설정하십시오. –

0

기회는, 당신은이 작업을 수행하려는 경우, 당신은 서버와 작동하는지 : http://en.wikipedia.org/wiki/Real-time_clock_alarm, 여기가 창에 그것을 주장하는 프로그램입니다. 그런 경우 메인 보드에는 IMPI베이스 보드 관리 컨트롤러가 있어야합니다. IPMI를 사용하여 섀시 전원을 원격으로 순환시킬 수 있습니다. 일반적으로 BMC는 자체 IP 주소를 가지며이 IP 주소에 연결하여 제어 메시지를 보낼 수 있습니다.

관련 문제