Posted on 2015/11/12 10:44
Filed Under Programming/C#

DNS server, DNS service  

C#으로 짠 또다른 프로그램(other.exe)을 실행하기위해서

 

System.Diagnostics.Process proc = System.Diagnostics.Process.Start("./other.exe");

 

 

 

종료

 

public const int WM_SYSCOMMAND = 0x0112;

public const int SC_CLOSE = 0xF060;

 

[DllImport("user32.dll")]

public static extern int FindWindow(

    string lpClassName, // class name

    string lpWindowName // window name

);

 

[DllImport("user32.dll")]

public static extern int SendMessage(

    int hWnd, // handle to destination window

    uint Msg, // message

    int wParam, // first message parameter

    int lParam // second message parameter

);

 

 

1. FindWindows로 창핸들을 찾아온다

 

int iHandle=Win32.FindWindow(className ,txtWndNm.Text);

2. SendMessage로 클로즈메세지를 보낸다.

 

int j=Win32.SendMessage(iHandle, Win32.WM_SYSCOMMAND,Win32.SC_CLOSE, 0);

 

Process.Kill()을 했는데도 안죽은게 이상하긴 하지만 위와 같이 사용하시면 확실히 죽을겁니다.

또한 외부 프로그램에 Message를 던질수도 있습니다.

크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
2015/11/12 10:44 2015/11/12 10:44

Posted on 2015/11/05 11:26
Filed Under Programming/C#

DNS server, DNS service  

관리자 권한이 없는 상태에서 시스템의 정보를 읽거나 쓰려고 할때 프로그램이 올바르게 작동하지 않습니다. 이럴때 프로그램이 실행되면서, 관리자 권한으로 상승시키는 것이 필요한데요. C#에서 이러한 내용에 대한 코드를 정리합니다. 모든 코드는 Program.cs에서 이루어집니다. 먼저 using 절에 다음과 같은 네임스페이스를 추가합니다.




using System.Security.Principal;
using System.Diagnostics; 


그리고 현재 관리자 권한 상태인지의 여부를 파악하는 함수를 추가합니다.


public static bool IsAdministrator()
{
    WindowsIdentity identity = WindowsIdentity.GetCurrent();
 
    if (null != identity)
    {
        WindowsPrincipal principal = new WindowsPrincipal(identity);
        return principal.IsInRole(WindowsBuiltInRole.Administrator);
    }
 
    return false;


Program.cs 파일의 Main 함수의 시작 부분에 다음의 코드를 추가하여 관리자 권한으로 실행되는지를 확인 한다.


            if (IsAdministrator() == false)
            {
                try
                {
                    ProcessStartInfo procInfo = new ProcessStartInfo();
                    procInfo.UseShellExecute = true;
                    procInfo.FileName = "IPSwitcher";
                    procInfo.WorkingDirectory = Environment.CurrentDirectory;
                    procInfo.Verb = "runas";
                    Process.Start(procInfo);
                }
                catch (Exception ex)
                {
                    Console.WriteLine("This Program need to Administrator Authority:" + ex.Message);
                }
                return;
            }
 
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
2015/11/05 11:26 2015/11/05 11:26

Posted on 2015/11/02 09:59
Filed Under Windows/장애처리

DNS server, DNS service  

SVN 클라이언트중에 TortoiseSVN 만한 것이 없어, 잘 사용하고 있는데

언젠가 부터 윈도우 탐색기에 아이콘 표시가 나타나지 않는다..
아이콘이 안보이면 무척 불편해서..

확인해보니, Explorer에서 오버레이가 10개까지 지원되는데, Explorer Shell 에서 아이콘 오버레이 우선 순위가 밀려서 나타나지 않는것..

수정 방법
1. regedit 실행
2. 다음의 레지스트리 키위치로 이동 

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers 
3. 2번 키의 자식 폴더에 tortoiseXXXXX 앞에 공백을 추가하여 우선 순위를 올려준다.
4. 탐색기 다시 시작하거나 윈도 리부팅

사용자 삽입 이미지
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
2015/11/02 09:59 2015/11/02 09:59

About

by CoCo

Notice

Counter

· Total
: 753297
· Today
: 95
· Yesterday
: 217