Posted on 2017/03/24 16:17
Filed Under Programming/C#

DNS server, DNS service  

윈도우 7 64Bit 이상부터는, 더 이상 시스템의 내장 스피커를 이용하여 비프음을 낼 수 없다고 한다. (윈도우 API에서 더 이상 지원하지 않음)

그러나 아래 링크와 같이 시스템에 직접 접근해서 가능하다.

링크 : https://www.codeproject.com/Tips/1022207/Make-Buzzer-Internal-Speaker-Sound-in-Windows-bit

링크 캡쳐 (원문의 링크가 없어져 더이상 보기 어려울 경우를 대비)

사용자 삽입 이미지


크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
2017/03/24 16:17 2017/03/24 16:17

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

About

by CoCo

Notice

Counter

· Total
: 799483
· Today
: 21
· Yesterday
: 154