2013-05-30 4 views
1

나는 C++로 시도해 보았고 주 윈도우의 닫기 버튼을 사용하지 못하도록 다른 프로세스에 코드를 주입해야하는 것처럼 보였다. 하지만 실제로 .NET 프로그램을 필요로하기 때문에 궁금합니다. C#으로 주 윈도우의 닫기 버튼을 회색으로 표시 할 수 있습니까?C#으로 다른 프로세스에서 닫기 단추를 제거 할 수 있습니까?

추신. 다시 제가하는 일은 제 것이 아닙니다. 나는 등을 찾을 수 있습니다

Process[] processes = Process.GetProcessesByName("Notepad"); 
foreach (Process p in processes) 
{ 
    IntPtr pFoundWindow = p.MainWindowHandle; 

    //Now how to disable it's close button? 
} 
+0

@Sysyphus : 신경 끄시 고합니다. 나는 그것을 WinAPIs로 처리했다. – ahmd0

답변

5

나는 그것을 가지고 생각 :

[DllImport("user32.dll")] 
static extern IntPtr GetSystemMenu(IntPtr hWnd, bool bRevert); 

[DllImport("user32.dll")] 
static extern bool DeleteMenu(IntPtr hMenu, uint uPosition, uint uFlags); 


const uint SC_CLOSE = 0xF060; 
const uint MF_BYCOMMAND = 0x00000000; 

Process[] processes = Process.GetProcessesByName("Notepad"); 
foreach (Process p in processes) 
{ 
    IntPtr pFoundWindow = p.MainWindowHandle; 

    IntPtr nSysMenu = GetSystemMenu(pFoundWindow, false); 
    if (nSysMenu != IntPtr.Zero) 
    { 
     if (DeleteMenu(nSysMenu, SC_CLOSE, MF_BYCOMMAND)) 
     { 
      //Done! 
     } 
    } 
} 
관련 문제