다른 신청서에서 한 신청서의 양식을 닫는 방법은 무엇입니까?

Oosutsuke

응용 프로그램 A (예 : AutoCAD, Word, ...)가 실행되면 런타임에 DLL X를 호출하여 작업 수행 → 양식 열기 로그인

응용 프로그램 B (예 : Photoshop, Excel ...)가 실행되면 런타임에 DLL Y를 호출하여 작업을 수행합니다. → 위의 로그인 양식을 닫고 싶습니다. 이렇게 할 수 있습니까?

가능합니까?

이미지 설명

bN_

다음은 다른 프로세스에서 창을 닫는 방법을 보여주는 작은 샘플입니다. 새 Windows Forms 프로젝트를 만들고 두 개의 Forms를 추가하고 첫 번째 단추에 두 개의 단추를 추가하고 해당 코드를 Form1에 넣습니다.

public partial class Form1 : Form
{
    delegate bool EnumWindowsProc(IntPtr Hwnd, IntPtr lParam);

    [DllImport("user32", SetLastError = true)]
    [return: MarshalAs(UnmanagedType.Bool)]
    private extern static bool EnumThreadWindows(int threadId, EnumWindowsProc callback, IntPtr lParam);

    [DllImport("user32", SetLastError = true)]
    [return: MarshalAs(UnmanagedType.Bool)]
    static extern bool EnumChildWindows(IntPtr hwndParent, EnumWindowsProc lpEnumFunc, IntPtr lParam);

    [DllImport("user32", SetLastError = true, CharSet = CharSet.Auto)]
    private extern static int GetWindowText(IntPtr hWnd, StringBuilder text, int maxCount);

    [DllImport("user32.dll", CharSet = CharSet.Auto)]
    static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam);

    private const int WM_CLOSE = 0x10;

    public Form1()
    {
        InitializeComponent();
        button1.Click += button1_Click;
        button2.Click += button2_Click;
    }

    private void button1_Click(object sender, EventArgs e)
    {
        var frm = new Form2();
        frm.Show(this);
    }

    private void button2_Click(object sender, EventArgs e)
    {
        Process[] processes = Process.GetProcessesByName("FindWindowSample");

        foreach (Process p in processes)
        {
            var handle = FindWindowInProcess(p, x => x == "Form2");

            if (handle != IntPtr.Zero)
            {
                SendMessage(handle, WM_CLOSE, IntPtr.Zero, IntPtr.Zero);
            }
        }
    }

    public static IntPtr FindWindowInProcess(Process process, Func<string, bool> compareTitle)
    {
        IntPtr windowHandle = IntPtr.Zero;

        foreach (ProcessThread t in process.Threads)
        {
            windowHandle = FindWindowInThread(t.Id, compareTitle);
            if (windowHandle != IntPtr.Zero)
            {
                break;
            }
        }

        return windowHandle;
    }

    private static IntPtr FindWindowInThread(int threadId, Func<string, bool> compareTitle)
    {
        IntPtr windowHandle = IntPtr.Zero;
        EnumThreadWindows(threadId, (hWnd, lParam) =>
        {
            StringBuilder text = new StringBuilder(200);
            GetWindowText(hWnd, text, 200);
            if (compareTitle(text.ToString()))
            {
                windowHandle = hWnd;
                return false;
            }
            return true;
        }, IntPtr.Zero);

        return windowHandle;
    }
}

응용 프로그램의 두 인스턴스를 컴파일 한 다음 실행합니다. 첫 번째에서 Button1을 클릭하여 Form2를 표시합니다. 두 번째 인스턴스에서 Button2를 클릭하여 첫 번째 인스턴스에서 Form2를 닫습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

한 요청에서 다른 요청으로 신뢰할 수있는 호스트 패턴을 복사하는 적절한 방법은 무엇입니까?

분류에서Dev

신청서의 부모 양식을 얻는 방법은 무엇입니까?

분류에서Dev

제출시 한 양식에서 다른 양식으로 값을 전달하는 방법은 무엇입니까?

분류에서Dev

한 끝점에서 다른 요청 본문을 사용하는 방법은 무엇입니까?

분류에서Dev

Alfresco Activiti 워크 플로에서 한 양식에서 다른 양식으로 값을 전달하는 방법은 무엇입니까?

분류에서Dev

다른 수업에서 메인 창을 닫는 방법은 무엇입니까?

분류에서Dev

tmux에서 다른 창을 닫는 방법은 무엇입니까?

분류에서Dev

우편 배달부에서 양식 데이터 요청의 동등한 원시 요청을 작성하는 방법은 무엇입니까?

분류에서Dev

Ruby on Rails에서 다양한 계정 유형에 대해 다른 양식을 렌더링하는 방법은 무엇입니까?

분류에서Dev

codeigniter에서 현재 양식으로 다른 양식을 추가하는 방법은 무엇입니까?

분류에서Dev

public (다른 양식에서 얻은) 값을 다른 함수로 전송하는 방법은 무엇입니까?

분류에서Dev

WPF에서 응용 프로그램의 다양한 상태에 대한 신호등 색상을 구현하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

iOS에서 동일한 장치의 다른 사용자에 대한 인앱 구매 자동 갱신 구독을 처리하는 방법은 무엇입니까?

분류에서Dev

요청에서 양식을 얻는 방법은 무엇입니까?

분류에서Dev

botframework의 임베디드 웹뷰에서 요청을 수신하고 메시징 확장 창을 닫는 방법은 무엇입니까?

분류에서Dev

Android에서 다른 활동을 닫은 후 주요 활동을 닫는 방법은 무엇입니까?

분류에서Dev

다른 시트의 앱 스크립트에서 Google 스프레드 시트 액세스 권한을 요청하거나 얻는 방법은 무엇입니까?

분류에서Dev

Laravel 5.1 필드가 하나에 필요하지만 다른 메서드에는 필요하지 않은 경우 두 메서드에 대해 동일한 양식 요청 규칙을 사용하는 방법은 무엇입니까?

분류에서Dev

함수에서 DB에 액세스 한 다음 게시 요청을 보내는 방법은 무엇입니까?

분류에서Dev

JavaScript를 사용하여 한 페이지에서 다른 페이지로 양식 입력 및 음악을 전달하는 방법은 무엇입니까?

분류에서Dev

ReactJS-양식에서 다른 선택을 클릭 한 후 구성 요소를 다시 렌더링하는 방법은 무엇입니까?

분류에서Dev

다른 양식의 목록에서 항목을 추가 / 제거하는 방법은 무엇입니까?

분류에서Dev

다른 양식에있는 텍스트 상자를 통해 DataGridview에서 선택한 행을 업데이트하는 방법은 무엇입니까?

분류에서Dev

양식이없는 각 루프에 대해 한 JSP 페이지에서 다른 페이지로 값을 보내는 방법은 무엇입니까?

분류에서Dev

ajax로 루프에서 양식을 망치는 각기 다른 값을 얻는 방법은 무엇입니까?

분류에서Dev

React에서 다른 양식 입력을 구별하는 방법은 무엇입니까?

분류에서Dev

Jetpack Compose에서 권한을 요청하는 방법은 무엇입니까?

분류에서Dev

Web Api에서 요청을 제한하는 방법은 무엇입니까?

분류에서Dev

Angular 2에서 그러한 요청을하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    한 요청에서 다른 요청으로 신뢰할 수있는 호스트 패턴을 복사하는 적절한 방법은 무엇입니까?

  2. 2

    신청서의 부모 양식을 얻는 방법은 무엇입니까?

  3. 3

    제출시 한 양식에서 다른 양식으로 값을 전달하는 방법은 무엇입니까?

  4. 4

    한 끝점에서 다른 요청 본문을 사용하는 방법은 무엇입니까?

  5. 5

    Alfresco Activiti 워크 플로에서 한 양식에서 다른 양식으로 값을 전달하는 방법은 무엇입니까?

  6. 6

    다른 수업에서 메인 창을 닫는 방법은 무엇입니까?

  7. 7

    tmux에서 다른 창을 닫는 방법은 무엇입니까?

  8. 8

    우편 배달부에서 양식 데이터 요청의 동등한 원시 요청을 작성하는 방법은 무엇입니까?

  9. 9

    Ruby on Rails에서 다양한 계정 유형에 대해 다른 양식을 렌더링하는 방법은 무엇입니까?

  10. 10

    codeigniter에서 현재 양식으로 다른 양식을 추가하는 방법은 무엇입니까?

  11. 11

    public (다른 양식에서 얻은) 값을 다른 함수로 전송하는 방법은 무엇입니까?

  12. 12

    WPF에서 응용 프로그램의 다양한 상태에 대한 신호등 색상을 구현하는 가장 좋은 방법은 무엇입니까?

  13. 13

    iOS에서 동일한 장치의 다른 사용자에 대한 인앱 구매 자동 갱신 구독을 처리하는 방법은 무엇입니까?

  14. 14

    요청에서 양식을 얻는 방법은 무엇입니까?

  15. 15

    botframework의 임베디드 웹뷰에서 요청을 수신하고 메시징 확장 창을 닫는 방법은 무엇입니까?

  16. 16

    Android에서 다른 활동을 닫은 후 주요 활동을 닫는 방법은 무엇입니까?

  17. 17

    다른 시트의 앱 스크립트에서 Google 스프레드 시트 액세스 권한을 요청하거나 얻는 방법은 무엇입니까?

  18. 18

    Laravel 5.1 필드가 하나에 필요하지만 다른 메서드에는 필요하지 않은 경우 두 메서드에 대해 동일한 양식 요청 규칙을 사용하는 방법은 무엇입니까?

  19. 19

    함수에서 DB에 액세스 한 다음 게시 요청을 보내는 방법은 무엇입니까?

  20. 20

    JavaScript를 사용하여 한 페이지에서 다른 페이지로 양식 입력 및 음악을 전달하는 방법은 무엇입니까?

  21. 21

    ReactJS-양식에서 다른 선택을 클릭 한 후 구성 요소를 다시 렌더링하는 방법은 무엇입니까?

  22. 22

    다른 양식의 목록에서 항목을 추가 / 제거하는 방법은 무엇입니까?

  23. 23

    다른 양식에있는 텍스트 상자를 통해 DataGridview에서 선택한 행을 업데이트하는 방법은 무엇입니까?

  24. 24

    양식이없는 각 루프에 대해 한 JSP 페이지에서 다른 페이지로 값을 보내는 방법은 무엇입니까?

  25. 25

    ajax로 루프에서 양식을 망치는 각기 다른 값을 얻는 방법은 무엇입니까?

  26. 26

    React에서 다른 양식 입력을 구별하는 방법은 무엇입니까?

  27. 27

    Jetpack Compose에서 권한을 요청하는 방법은 무엇입니까?

  28. 28

    Web Api에서 요청을 제한하는 방법은 무엇입니까?

  29. 29

    Angular 2에서 그러한 요청을하는 방법은 무엇입니까?

뜨겁다태그

보관