Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 Q&A
Delphi Programming Q&A
[14364] Re:shellexecute의 레퍼런스를 살펴보세요.
오랑캐꽃 [oranke] 3480 읽음    2012-07-12 16:06
http://msdn.microsoft.com/en-us/library/windows/desktop/bb762153(v=vs.85).aspx

ShellExecute의 리턴값은 성공할 경우 32 초과의 값, 실패할 경우는 32 이하의 에러코드 입니다.
예전 도움말에는 실행파일의 인스턴스라고 되어있는데, 이제는 16비트 윈도와 호환을 위한 값일 뿐
실제 인스턴스는 아니라고 나와있군요. 그냥 실행의 성공여부로만 사용하라고 되어있습니다.

핸들이라는 말은 윈도핸들 외에도 쓰레드핸들, 파일같은 리소스 핸들 등 여러가지 의미로 쓰입니다.
또한 ShellExecute로 실행시킨 실행파일이 윈도를 가질지 가지지 않을지는 어디까지나 만든 사람의 마음입니다.
때문에... 지금 접근하신 방법으로는 원하는 결과를 얻으시기 힘들 듯 하네요.

참고로... CreateProcess() 의 경우 마지막 인자로 전달한 lpProcessInformation 구조체에
프로세스 ID와 메인쓰레드 ID값이 넘어옵니다. EnumThreadWindows() API로 메인쓰레드와 연관된
윈도 핸들의 목록을 얻을 수 있구요.



철갑 님이 쓰신 글 :
: 하루에 연달아 질문하는것 같아서 죄송스럽네요.
:
: 쉘익스큐트를 실행해서 핸들을 받고 핸들을 제어해서 있는지 없는지 판단하고
:
: 페이지의 위치와 크기를 조절하는게 목적입니다.
:
: 그런데 쉘익스큐트로는 어떤걸 실행시켜도 계속 핸들넘버서 42가 나오고 매뉴얼에는 39이상이라면 오류가 아니니 걱정하지 않아도 된다고 하는데
:
: 핸들넘버로 판단하고 제어를 해보면 아무것도 되지 않습니다.
:
: 도대체 뭐가 문제인걸까요. 외국 사이트에서 찾아봐도 핸들넘버라고 이야기하고 말이죠.
:
:
: chrome_HWND 는 전역변수고
:
: chrome_HWND := ShellExecute(Handle, 'Open', pchar('http://...'+data), nil, nil, SW_NORMAL);
:
: 라는 명령으로 인터넷창을 열고
:
: SetForegroundWindow(chrome_HWND);
:
: 라는 명령으로 내려놨던 창을 활성화 시키는 방법으로 핸들을 테스트하고 있습니다.
:
: 뭐가 문제일까요

+ -

관련 글 리스트
14361 shellexecute의 리턴값이 항상 42만 나오는 경우는 뭘까요. 철갑 3958 2012/07/11
14364     Re:shellexecute의 레퍼런스를 살펴보세요. 오랑캐꽃 3480 2012/07/12
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.