FindWindow에서 리턴값을 체크해보세요.
시작 타이밍에 의해서 윈도우가 생성되기 이전에 저 코드가 동작할 수 있습니다.
그러면 FindWindow 리턴값이 NULL이 나오겠죠.
에러 처리 루틴을 강화하시면 대부분의 문제가 해결되니 API 레퍼런스를 보시고,
함수가 에러가 났을 때 무슨 값을 출력하나 유심히 보시고 그것에 대비한 처리를 다 해놓으시면
웬만한 로지컬 에러는 모두 해결됩니다.
더 확실한 코딩을 위하여 CodeGuard도 사용할 것을 권장합니다.
HWND hTaskbar;
hTaskbar = FindWindow("ConsoleWindowClass",NULL);
if( hTaskbar == NULL )
{
printf("콘솔 윈도우 핸들을 찾을 수 없었습니다.");
return;
}
else
{
ShowWindow(hTaskbar, SW_HIDE);
}
부탁해요 님이 쓰신 글 :
: 하지만 초반부에는 딱히 드라이버를 쓰는 일이 없는데도 그러네요;
: 첫부분의 소스가
: void main(int argc, CHAR* argv[])
: {
:
: HWND hTaskbar;
: hTaskbar = FindWindow("ConsoleWindowClass",NULL);
: ShowWindow(hTaskbar, SW_HIDE);
: // Tool이 실행중인지 확인
: strcpy(filename,argv[0]);
: ...
: }
: 이것이라서 일단 시작하자마자 스텔스로 창을 숨기는데 일단 첫줄부터 말을 안듣고 가만히 창이 안사라지고 떠있습니다....평소에는 물론 정상작동합니다...
: 부팅이 완료될때까지 무한루프를 돌리면서시간을 끌수는 있지만 우선 스텔스로 돌리고 나서 끌어도 시간을 끌어야지 그렇지 않으면 스텔스의 의미가 없어져서요.. 아예 명령을 이행하지 않으니 무슨소스를 짜도 안될것 같은데 어떡해야 하죠?..
:
: 방태윤 님이 쓰신 글 :
: : 보통 부팅 다 끝날려면 시간 좀 걸리자나요?
: : 환경이 조성되기전에 (드라이버가 다 올라오지 않은 상태)
: : 해당 프로그램이 시작되서 그런거 아닐까요?
: :
: : 예를들면 인터넷을 사용한다면 인터넷이 연결될때까지
: : 프로그램내부에서 체크를 한다던가..그런 부분을 두어야 할거 같습니다.
: :
: :
: : 부탁해요 님이 쓰신 글 :
: : : 평소에 잘 돌아가는 프로그램이라도 시작프로그램으로 등록해 놓으면 켜지긴 하는데 켜진상태로
: : : 명령을 아무것도 이행하지 않고 멈춰있는데 왜 그런가요?;; 아주 이것땜에 미치겠어요 평소엔
: : : 잘 돌아가니 디버그로 잡을수 있는 에러도 아니고 ㅠㅠ
: : : 걍 창이 떠서 검정화면으로 멈춰있어요; (게다 스텔스모드로 전환하도록 해놓았는데);;
: : : 왜그런걸까요ㅠㅠ OS문제인가요? 다른 컴퓨터에서도 그러던데;;ㅠㅠ