메신져 다른 용무 중 구현하기

2011.06.16 01:09 개발언어/C#.NET

메신져 다른 용무 중 구현하기


GetProcessesByName 함수를 이용하여 메신져의 process id가 같은 워드작업일 경우 다른용무중으로 표시를 해줍니다. 메신져 다른 용무중 구현을 위한 아주 간단한 프로그램입니다. 현재 선택된 상위의 윈도우의 process id을 받아 워드, 엑셀, 파워포인트 등의 프로세스 id와 동일한지 검사를 해주는 로직입니다. 간단한 프로그램이며 C# 소스를 첨부하였습니다.





다른용무중 구현 소스코드


다른용무중인지 확인하는 소스코드입니다. 원리는 현재 선택된 상위의 윈도우의 프로세스 id을 찾습니다 .찾은 id로 GetProcessesByName 함수를 이용하여 프로세스의 id와 일치하는지 검사합니다. 일치하는 워드프로세스, 엑셀, 메모장을 사용중일때는 다른 용무중으로 표시합니다.

 1         private static bool findProcess(string pname, uint lpdwProcessId)
 2         {
 3             bool bresult = false;
 4             try
 5             {
 6                 if (Process.GetProcessesByName(pname)[0].Id == lpdwProcessId)
 7                     bresult = true;
 8             }
 9             catch
10             {
11                 bresult = false;
12             }
13 
14             return bresult;
15         }
16 
17 
18         public static string GetTopWindowName()
19         {
20             IntPtr hWnd = GetForegroundWindow();
21             uint lpdwProcessId;
22             StringBuilder text = new StringBuilder(1000);
23             GetWindowThreadProcessId(hWnd, out lpdwProcessId);
24 
25 
26             if (findProcess("notepad", lpdwProcessId) ||     // 메모장
27                 findProcess("excel", lpdwProcessId) ||       // 엑셀
28                 findProcess("POWERPNT", lpdwProcessId) ||    // 파워포인트
29                 findProcess("wordpad", lpdwProcessId)        // 워드프로세스
30                 )
31             {
32                 text.Append("다른 용무 중");
33             }
34             
35             return text.ToString();
36         }

참고소스 : http://stackoverflow.com/questions/2635404/how-to-get-process-name-and-title-of-the-top-window-on-windows-c


프로세스 리스트 중 원하는 프로세스를 다른 용무중으로 설정합니다. 실행중인 프로세스를 중단점을 걸어 리스트를 뽑아보았습니다.

Process.GetProcesses()
{System.Diagnostics.Process[102]}
    [0]: {System.Diagnostics.Process (MonitoringHost)}
    [1]: {System.Diagnostics.Process (npkcmsvc)}
    [2]: {System.Diagnostics.Process (firefox)}
    [3]: {System.Diagnostics.Process (EXCEL)}
    [4]: {System.Diagnostics.Process (taskhost)}
    [5]: {System.Diagnostics.Process (inetinfo)}
    [6]: {System.Diagnostics.Process (msdtc)}
    [7]: {System.Diagnostics.Process (msvsmon)}
    [8]: {System.Diagnostics.Process (TSVNCache)}
    [9]: {System.Diagnostics.Process (plugin-container)}
    [10]: {System.Diagnostics.Process (npnj5Agent)}
    [11]: {System.Diagnostics.Process (svchost)}
    [12]: {System.Diagnostics.Process (vmms)}
    [13]: {System.Diagnostics.Process (OSPPSVC)}
    [14]: {System.Diagnostics.Process (sqlwriter)}
    [15]: {System.Diagnostics.Process (FlashUtil10s_ActiveX)}
    [16]: {System.Diagnostics.Process (nvvsvc)}
    [17]: {System.Diagnostics.Process (csrss)}
    [18]: {System.Diagnostics.Process (w3wp)}
    [19]: {System.Diagnostics.Process (sqlservr)}
    [20]: {System.Diagnostics.Process (WSSADMIN)}
    [21]: {System.Diagnostics.Process (iexplore)}
    [22]: {System.Diagnostics.Process (mstsc)}
    [23]: {System.Diagnostics.Process (lsm)}
    [24]: {System.Diagnostics.Process (svchost)}
    [25]: {System.Diagnostics.Process (svchost)}
    [26]: {System.Diagnostics.Process (notepad)}
    [27]: {System.Diagnostics.Process (POWERPNT)}
    [28]: {System.Diagnostics.Process (alg)}
    [29]: {System.Diagnostics.Process (lsass)}
    [30]: {System.Diagnostics.Process (sqlbrowser)}
    [31]: {System.Diagnostics.Process (iTunesHelper)}
    [32]: {System.Diagnostics.Process (services)}
    [33]: {System.Diagnostics.Process (MSOSYNC)}
    [34]: {System.Diagnostics.Process (mssearch)}
    [35]: {System.Diagnostics.Process (WindowsFormsApplication3.vshost)}
    [36]: {System.Diagnostics.Process (svchost)}
    [37]: {System.Diagnostics.Process (HealthService)}
    [38]: {System.Diagnostics.Process (iexplore)}
    [39]: {System.Diagnostics.Process (npstartersvc)}
    [40]: {System.Diagnostics.Process (TrustedInstaller)}
    [41]: {System.Diagnostics.Process (wsstracing)}
    [42]: {System.Diagnostics.Process (sqlservr)}
    [43]: {System.Diagnostics.Process (svchost)}
    [44]: {System.Diagnostics.Process (svchost)}
    [45]: {System.Diagnostics.Process (svchost)}
    [46]: {System.Diagnostics.Process (SMSvcHost)}
    [47]: {System.Diagnostics.Process (nvvsvc)}
    [48]: {System.Diagnostics.Process (svchost)}
    [49]: {System.Diagnostics.Process (devenv)}
    [50]: {System.Diagnostics.Process (svchost)}
    [51]: {System.Diagnostics.Process (WmiPrvSE)}
    [52]: {System.Diagnostics.Process (svchost)}
    [53]: {System.Diagnostics.Process (devenv)}
    [54]: {System.Diagnostics.Process (OWSTIMER)}
    [55]: {System.Diagnostics.Process (MonitoringHost)}
    [56]: {System.Diagnostics.Process (winlogon)}
    [57]: {System.Diagnostics.Process (FcsSas)}
    [58]: {System.Diagnostics.Process (mDNSResponder)}
    [59]: {System.Diagnostics.Process (NateOnMain)}
    [60]: {System.Diagnostics.Process (NvXDSync)}
    [61]: {System.Diagnostics.Process (WmiPrvSE)}
    [62]: {System.Diagnostics.Process (svchost)}
    [63]: {System.Diagnostics.Process (svchost)}
    [64]: {System.Diagnostics.Process (MSASCui)}
    [65]: {System.Diagnostics.Process (AppleMobileDeviceService)}
    [66]: {System.Diagnostics.Process (iPodService)}
    [67]: {System.Diagnostics.Process (svchost)}
    [68]: {System.Diagnostics.Process (taskmgr)}
    [69]: {System.Diagnostics.Process (svchost)}
    [70]: {System.Diagnostics.Process (WLIDSVC)}
    [71]: {System.Diagnostics.Process (mqsvc)}
    [72]: {System.Diagnostics.Process (svchost)}
    [73]: {System.Diagnostics.Process (w3wp)}
    [74]: {System.Diagnostics.Process (wininit)}
    [75]: {System.Diagnostics.Process (svchost)}
    [76]: {System.Diagnostics.Process (svchost)}
    [77]: {System.Diagnostics.Process (iexplore)}
    [78]: {System.Diagnostics.Process (MyPeople)}
    [79]: {System.Diagnostics.Process (SMSvcHost)}
    [80]: {System.Diagnostics.Process (dwm)}
    [81]: {System.Diagnostics.Process (svchost)}
    [82]: {System.Diagnostics.Process (explorer)}
    [83]: {System.Diagnostics.Process (svchost)}
    [84]: {System.Diagnostics.Process (MsMpEng)}
    [85]: {System.Diagnostics.Process (jusched)}
    [86]: {System.Diagnostics.Process (Messenger.vshost)}
    [87]: {System.Diagnostics.Process (smss)}
    [88]: {System.Diagnostics.Process (iexplore)}
    [89]: {System.Diagnostics.Process (WebAnalyticsService)}
    [90]: {System.Diagnostics.Process (spoolsv)}
    [91]: {System.Diagnostics.Process (explorer)}
    [92]: {System.Diagnostics.Process (WLIDSVCM)}
    [93]: {System.Diagnostics.Process (csrss)}
    [94]: {System.Diagnostics.Process (nvSCPAPISvr)}
    [95]: {System.Diagnostics.Process (IMEDICTUPDATE)}
    [96]: {System.Diagnostics.Process (aspnet_state)}
    [97]: {System.Diagnostics.Process (svchost)}
    [98]: {System.Diagnostics.Process (svchost)}
    [99]: {System.Diagnostics.Process (explorer)}
    < 자세히... (102 항목의 첫째 100이(가) 표시되었습니다.) >

신고
  1. Favicon of http://minimonk.tistory.com BlogIcon 구차니비밀방문자
    2011.06.18 10:28 신고 edit/del reply

    오오 stackoverflow 님! ㅋㅋㅋ
    네이트에서 구현하는 방식이 궁금했는데 이렇게 하는거였군요!

    • Favicon of http://ndolson.com BlogIcon 엔돌슨비밀방문자
      2011.06.18 11:23 신고 edit/del

      ㅋㅋㅋ 구차니님 반가워요.
      stackoverflow님이 구글링님과 친한가봐요 자주 뵙고 있죠 ㅋㅋ 네이트온의 구현방식도 이런식일겁니다. 뭐 뜯어본건 아니라 똑같다라기 보다 이런식으로 구현가능하다는 거죠~ 발코딩이라 민망합니다.