DLL 함수의 인스턴스가 아직 여전히 사용하려면 어떻게해야합니까?
-
12-12-2019 - |
문제
[DllImport("user32.dll")]
public static extern int FindWindow(string lpClassName, string lpWindowName);
[DllImport("user32.dll")]
public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
.
이처럼.나는 둘 다 필요합니다.INTPTR을 위해 가면 포인터가되어야하기 때문에 "핸들"이 필요가있는 다른 방법이 필요할 수있는 다른 방법이 필요합니다.
Bitmap thisScreenshot = new Bitmap(Width, Height);
Graphics gfxScreenshot = Graphics.FromImage(thisScreenshot);
IntPtr hdcBitmap = gfxScreenshot.GetHdc();
PrintWindow(handle, hdcBitmap, 0);
gfxScreenshot.ReleaseHdc(hdcBitmap);
.
i 기본적으로 INT FindWindow 기능을 갖는 동안이를 실행하고 싶습니다.어떤 아이디어가 어떻게?또한 FindIndow는 핸들입니다.
해결책
int를 반환하는 버전을 사용하는 것은 결코 정확하지 않습니다.FindWindow는 창 핸들을 반환합니다. 항상 intptr입니다.대신 PostMessage 선언을 수정해야합니다 :
[DllImport("user32.dll")]
public static extern bool PostMessage(IntPtr hWnd, int msg, IntPtr wp, IntPtr lp);
. 다른 팁
함수에 다른 이름을 지정하고 입력 점을 사용하여 원래 이름을 지정합니다
[DllImport("user32.dll")]
public static extern int FindWindow(string lpClassName, string lpWindowName);
[DllImport("user32.dll", EntryPoint="FindWindow")]
public static extern IntPtr FindWindowA(string lpClassName, string lpWindowName);
. 제휴하지 않습니다 StackOverflow