var
hwnd : THandle;
begin
hwnd := LoadLibrary('aaa.exe');
if hwnd < 32 then
error 메세지;
end;
여기서 LoadLibrary함수의 리턴 값은 무엇을 뜻하는지 궁금합니다.
help 에 보니깐..
호출되는 프로세서의 주소 공간에서 명시된 실행 모듈을 말한다라고 적혀 있는것 같은데..(번역이 맞나.. --;;;)
hwnd 값을 단순히 int으로 반환해서 보니깐..
10자리 정도의 정수 값이 나오던데요..
이 값이 뜻하는건 뭔지 궁금합니다.
만약 위에서 aaa.exe가 존재 하는 파일이면 0이 아닌 값이 나오고요.
존재 하지 않는 파일이면 0의 값이 반환 되더군요.
첨에는 프로세서 아이디인줄 알고.. 해보니깐..
실행된건지 실행 안된건지의 유무에 따라 값이 나오는것이 아니라..
단지 파일이 존재 하는지 안하는지에 따라서 값이 0 혹은 그외의 값이 나오더군요.
그래서 프로세서 아이디는 아닌것 같던데...(그리고 작업 관리자의 값이랑 틀리고요.)
지져분하게 적어서 죄송하구요.
좀 알려주세요.
자세히~~
그럼 즐코요
> var
> hwnd : THandle;
> begin
> hwnd := LoadLibrary('aaa.exe');
>
> if hwnd < 32 then
> error 메세지;
> end;
>
> 여기서 LoadLibrary함수의 리턴 값은 무엇을 뜻하는지 궁금합니다.
> help 에 보니깐..
> 호출되는 프로세서의 주소 공간에서 명시된 실행 모듈을 말한다라고 적혀 있는것 같은데..(번역이 맞나.. --;;;)
> hwnd 값을 단순히 int으로 반환해서 보니깐..
> 10자리 정도의 정수 값이 나오던데요..
>
> 이 값이 뜻하는건 뭔지 궁금합니다.
>
> 만약 위에서 aaa.exe가 존재 하는 파일이면 0이 아닌 값이 나오고요.
> 존재 하지 않는 파일이면 0의 값이 반환 되더군요.
>
> 첨에는 프로세서 아이디인줄 알고.. 해보니깐..
> 실행된건지 실행 안된건지의 유무에 따라 값이 나오는것이 아니라..
> 단지 파일이 존재 하는지 안하는지에 따라서 값이 0 혹은 그외의 값이 나오더군요.
> 그래서 프로세서 아이디는 아닌것 같던데...(그리고 작업 관리자의 값이랑 틀리고요.)
>
> 지져분하게 적어서 죄송하구요.
> 좀 알려주세요.
> 자세히~~
> 그럼 즐코요
>
안냐세영
hwnd := LoadLibrary('aaa.exe');
에서 hwnd는 윈도우의 핸들값입니다.
마치 비행기 탈때 가방이나 다른곳에 라벨을 붙이 듯이
윈도가 실행하게 되면 이 handle이라는 것이 생기게 되는데
아마도 DWORD의 값을 가지게 될껍니덩.
그리구 LoadLibrary는 dll을 동적으로 load할 때 사용하게 되는데,
프로그램이 실행할 때 항상 필요한것이 아니라 어떤 특별한 기능을
사용하고자 할 때만 필요하다면 실행하는 동안에 메모리를 잡아 먹으면서
까지 같이 실행될 필요는 없겠져. 그럴때 어떤 모듈로 만들어 놓고(dll)
이것을 load하는 것이니 Process ID가 아닌건 당연하구영, 그 파일의
존재 여부와도 당근(말밥) 관련이 있겠졍.
없는 파일을 load하려니 당연이 error ('0')의 값을 return하게 되는겁니덩.
윈도우 핸들을 return하는 것은 이렇게 load한 것들은 반드시 FreeLibrary()를
통해 unload를 해주어야 합니덩...
그럼 즐거운 연말 되시구영...
form UserSpace