DLL 함수의 인스턴스가 아직 여전히 사용하려면 어떻게해야합니까?

StackOverflow https://stackoverflow.com//questions/11685675

  •  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);
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top