본문으로 바로가기

프로그램 검색 결과

해당 글 92


using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace CaptionTimetableSupporet
{
    public partial class MainForm : Form
    {

        // P/Invoke constants
        private const int WM_SYSCOMMAND = 0x112;
        private const int MF_STRING = 0x0;
        private const int MF_SEPARATOR = 0x800;

        // P/Invoke declarations
        [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
        private static extern IntPtr GetSystemMenu(IntPtr hWnd, bool bRevert);

        [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
        private static extern bool AppendMenu(IntPtr hMenu, int uFlags, int uIDNewItem, string lpNewItem);

        [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
        private static extern bool InsertMenu(IntPtr hMenu, int uPosition, int uFlags, int uIDNewItem, string lpNewItem);

        // ID for the About item on the system menu
        private int SYSMENU_ABOUT_ID = 0x1;




        protected override void OnHandleCreated(EventArgs e)
        {
            base.OnHandleCreated(e);

            // Get a handle to a copy of this form's system (window) menu
            IntPtr hSysMenu = GetSystemMenu(this.Handle, false);

            // Add a separator
            AppendMenu(hSysMenu, MF_SEPARATOR, 0, string.Empty);

            // Add the About menu item
            AppendMenu(hSysMenu, MF_STRING, SYSMENU_ABOUT_ID, "&About…");
        }

        protected override void WndProc(ref Message m)
        {
            base.WndProc(ref m);

            // Test if the About item was selected from the system menu
            if ((m.Msg == WM_SYSCOMMAND) && ((int)m.WParam == SYSMENU_ABOUT_ID))
            {
                MessageBox.Show("Custom About Dialog");
            }

        }
    }
}
크리에이티브 커먼즈 라이센스
Creative Commons License

댓글을 달아 주세요

[C#] 윈도우 OS 정보 얻기

category 프로그램/C# 2019/06/08 07:47

            OperatingSystem os = System.Environment.OSVersion;

            Console.WriteLine("플랫폼 : " + os.Platform);

            Console.WriteLine("서비스팩 : " + os.ServicePack);

            Console.WriteLine("버전 : " + os.Version);

            Console.WriteLine("버전 : " + os.Version);

            Console.WriteLine("버전 문자열 : " + os.VersionString);

            Console.WriteLine("CLR버전 : " + System.Environment.Version);

            Console.ReadLine();
크리에이티브 커먼즈 라이센스
Creative Commons License

댓글을 달아 주세요

[C#] WebBrowser version 변경

category 프로그램/C# 2019/02/21 11:10
Program.cs 에서 다음을 사용하도록 합니다.

using System.Runtime.InteropServices;
using Microsoft.Win32;



레지스트리에 세팅하고 값이 정상적인지 체크하도록 하는 함수 입니다.

        private static void SetIEVersioneKeyforWebBrowserControl(string appName, int ieval)
        {
            string RegKeyPath = "";
            RegistryKey Regkey = null;

            try
            {
                // x86, x64 구분
                if (Environment.Is64BitProcess)
                {
                    RegKeyPath = @"SOFTWARE\WOW6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION";
                }
                else
                {
                    RegKeyPath = @"SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION";
                }

                //
                try
                {
                    Regkey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(RegKeyPath, true);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(" 관리자 권한이 아니여서 접근이 불가능 합니다.");
                }
                finally
                {
                    // 레지스트리의 값을 체크
                    if (Regkey == null)
                    {
                        // 찾지 못할 경우 그냥 PASS
                    }
                    else
                    {
                        // 실행 프로세스가 등록되어 있는지 값을 가져오기
                        string FindAppkey = Convert.ToString(Regkey.GetValue(appName));

                        // 이미 세팅 되어 있을 경우
                        if (FindAppkey == ieval.ToString())
                        {
                            Regkey.Close();
                        }
                        else
                        {
                            // 값 세팅하기
                            Regkey.SetValue(appName, unchecked((int)ieval), RegistryValueKind.DWord);

                            //check for the key after adding 
                            FindAppkey = Convert.ToString(Regkey.GetValue(appName));
                            if (FindAppkey != ieval.ToString())
                            {
                                Console.WriteLine("IE 에뮬레이트 값을 설정하지 못하엿습니다.");
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {

            }
            finally
            {
                //레지스트리 수정을 종료함.
                if (Regkey != null)
                {
                    Regkey.Close();
                }
            }
        }



프로그램 시작전에 체크헤서 체크 하도록 합니다.

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
 
            // 현재 프로세스 이름 획득
            var targetApplication = System.Diagnostics.Process.GetCurrentProcess().ProcessName + ".exe";
            int browserver = 7;
            int ie_emulation = 11999;

            // 설치된 브라우저 버전 체크
            using (WebBrowser wb = new WebBrowser())
            {
                browserver = wb.Version.Major;
                if (browserver >= 11)
                {
                    ie_emulation = 11001;
                }
                else if (browserver == 10)
                {
                    ie_emulation = 10001;
                }
                else if (browserver == 9)
                {
                    ie_emulation = 9999;
                }
                else if (browserver == 8)
                {
                    ie_emulation = 8888;
                }
                else
                {
                    ie_emulation = 7000;
                }
            }

            // 레지스트리에 값 세팅
            SetIEVersioneKeyforWebBrowserControl(targetApplication, ie_emulation);

            // 프로그램 시작
            Application.Run(new MainForm());
크리에이티브 커먼즈 라이센스
Creative Commons License

댓글을 달아 주세요

[C#] 관리자 권한으로 실행하기

category 프로그램/C# 2019/01/10 11:03
해당 작업은 Program.cs 에서 작업을 합니다.


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




        /// <summary>
        /// 관리자 권한 체크 
        /// </summary>
        /// <returns></returns>
        public static bool IsAdministrator()
        {
            WindowsIdentity identity = WindowsIdentity.GetCurrent();

            if (null != identity)
            {
                WindowsPrincipal principal = new WindowsPrincipal(identity);
                return principal.IsInRole(WindowsBuiltInRole.Administrator);
            }

            return false;
        }



메인 실행전에 관리자 권한으로 실행 하도록 하면 됩니다.


        [STAThread]
        static void Main()
        {
                if (IsAdministrator() == false)
                {
                    try
                    {
                        ProcessStartInfo procInfo = new ProcessStartInfo();
                        procInfo.UseShellExecute = true;
                        procInfo.FileName = Application.ExecutablePath;
                        procInfo.WorkingDirectory = Environment.CurrentDirectory;
                        procInfo.Verb = "runas";
                        Process.Start(procInfo);
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message.ToString());
                    }

                    return;
                }

                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new MainForm());
        }



위 방법으로로 처리 할 수 있지만 다른 방법도 있습니다.

사용자 삽입 이미지

프로그램  속성에서 보안의 "ClickOnce"를 선택합니다.

사용자 삽입 이미지


그러면은 위 처럼 "app.mainfest"가 생기게 됩니다.
※ 이방법을 할 경우에는 프로그램에 아이콘에 방패 모양이 생기게 됩니다.
사용자 삽입 이미지


원래 기본값이 "asInvoker' 세팅된 부분을 "requireAdministrator" 로 변경하면 됩니다.

크리에이티브 커먼즈 라이센스
Creative Commons License

댓글을 달아 주세요




                    sourceFilePath = "업로드할 파일 경로 및 이름";

                    WebClient client = new WebClient();
                    client.Credentials = CredentialCache.DefaultCredentials;
                    client.UploadFile(@"URL 주소 ", "POST", sourceFilePath);
                    client.Dispose();
크리에이티브 커먼즈 라이센스
Creative Commons License

댓글을 달아 주세요

[C#] 화면 캡쳐 하기

category 프로그램/C# 2018/12/10 15:22
WinForm 안의 Controler 를 캡쳐하기


            string FileName = DateTime.Now.ToString("yyyyMMdd_HHmmss");

            Bitmap bitmap = new Bitmap(width, height);
            this.panel1.DrawToBitmap(bitmap, new Rectangle(0, 0, width, height));
            bitmap.Save(FileName + ".png", ImageFormat.Png);




스크린틀 캡쳐하는 기능


            string FileName = DateTime.Now.ToString("yyyyMMdd_HHmmss");

           Bitmap bitmap = new Bitmap(넓이, this.높이);
            Graphics g = Graphics.FromImage(bitmap);
            g.CopyFromScreen(
                PointToScreen(new Point(시작 X좌표, 시작 Y 좌표)),
                new Point(0, 0),
                new Pint(넓이, 높이));
           bitmap.Save(FileName + ".png", ImageFormat.Png);

크리에이티브 커먼즈 라이센스
Creative Commons License

댓글을 달아 주세요

[PHP] 라인 Notify 기능

category 프로그램/PHP 2018/11/10 15:14
API 토큰 생성 사이트 :

https://notify-bot.line.me/my/

위 사이트에서 토큰을 발행 합니다.

아래의 기능으로 PHP 파일을 작성해서 데몬에 올려도 되고, cron에 작업해도 됩니다.


        $APIURL = "https://notify-api.line.me/api/notify";
        $APIKey = "발행한 Key";

        if ($imgUrl === null) {
            $postData = [
                "message" => $msg
            ];
        } else {
            $postData = [
                "message" => $msg,
                "imageThumbnail" => $imgUrl,
                "imageFullsize" => $imgUrl
            ];
        }
        
        $fields = '';
        foreach ($postData as $dataKey => $dataValue) {
            $fields .= $dataKey . '=' . $dataValue . '&';
        }
        rtrim($fields, '&');


        $curlOptions = [
            CURLOPT_URL => $this->APIURL,
            CURLOPT_POST => 1,
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_ENCODING => "",
            CURLOPT_MAXREDIRS => 10,
            CURLOPT_TIMEOUT => 30,
            CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
            CURLOPT_POSTFIELDS => $fields,
            CURLOPT_HTTPHEADER => [
                "authorization: Bearer ". $APIKey,
                "content-type: application/x-www-form-urlencoded"
            ],
        ];

        $curl = curl_init();
        curl_setopt_array($curl, $curlOptions);

        $response = curl_exec($curl);
        $err = curl_error($curl);
        curl_close($curl);
크리에이티브 커먼즈 라이센스
Creative Commons License

댓글을 달아 주세요

[PHP] date, 날짜 포맷 설정

category 프로그램/PHP 2018/10/29 09:38
년도와 관련된 포멧

 문자  설명 
Y 4자리 숫자로 표시  1999, 2003
y 2자리 숫자로 표시 99, 03
o ISO-8601에 맞는 포맷으로 표시
(Y랑 같으나, ISO 규격에 맞는 W가 포함한 년을 사용)
1999, 2003
L 윤년 여부 윤년 : 1
아닐경우 : 0


월과 관련된 포맷

문자  설명
 F 달을 영어로 표시  January, December
M 3자리의 짧은 영어로 표시 Jan, Dec
m 0을 앞에 붙인 2자리 숫자  01, 12
n 월을 숫자로 표시 1, 12
t 해당하는 달의 수를 표시 28, 30, 31


일과 관련된 포맷

문자 설명
d 0을 앞에 붙인 2자리 숫자 01 ~ 31
j 일을 숫자로 표시 1 ~ 31 
z 1년의 n번째 날  0 ~ 365
S 날짜 뒤에 영어 2글자 suffix 추가 st, nd, rd or th (j와 잘 연동됨)
예: 1st, 2nd, 3rd, 4th


요일과 관련된 표현

문자 설명
D 요일을 영어 3글자로 표시 Mon, Sun
l
(소문자 L )
요일을 영어 단어로 표시 Monday, Sunday 
N ISO-8601에 맞는 표시
(PHP 5.1 이후)
1 (월요일) ~ 7 (일요일) 
W 요일을 숫자로 표시 0 (일요일) ~ 6 (토요일)


주와 관련된 표현

문자 설명
W ISO-8601 에 맞는 1년의 n번째 주, 월요일에 한 주가 시작
(PHP 4.1 이후)
42 (1년의 42번째 주)


시간과 관련된 표현

문자 설명
H 시간을 24시간 기준 0을 채운 2자리 숫자로 표시  00 ~ 23
G  시간을 24시간 기준 숫자로 표시 0 ~ 23
h 시간을 12시간 기준 0을 채운 2자리 숫자로 표시  01 ~ 12
g 시간을 12시간 기준 숫자로 표시  1 ~ 12
a 소문자 오전, 오후  am, pm
A 대문자 오전, 오후 AM, PM
i 분을 0을 앞에 붙인 2자리 숫자로 표시  00 ~ 59 
s 초를 0을 앞에 붙인 2자리 숫자로 표시 00 ~ 59
u 밀리초를 표시
(date()를 항상 000000을 리턴, DateTime::format()은 밀리초를 지원, PHP 5.2.2 이상)
밀리초를 표시 (date()를 항상 000000을 리턴, DateTime::format()은 밀리초를 지원, PHP 5.2.2 이상)

출처: http://unikys.tistory.com/272 [All-round programmer]
654321
B Swatch Internet Time
(하루를 1000으로 나눔)
000 ~ 999 


타임존'과 관련된 문자

문자 설명
e 타임존 ID (PHP 5.1.0 이상) UTC, GMC, Atlantic/Azores 
I
(대문자 i)
섬머타임 여부 섬머타임이면 1 아니면 0 
O Greenwich time(GMT)와 다른 시간 +0200
P GMT와 다른 시간에 :를 추가
(PHP 5.1.3 이상)
+02:00 
T 타임존 약자 EST, MDT 
Z GMT와의 차이를 초로 표시
UTC 서쪽은 음수
동쪽은 양수
-43200 ~ 50400


전체 양식

문자 설명
c ISO-8601 기준의 날짜 표시
(PHP 5 이상)
2004-02-12T15:19:21+00:00
r RFC 2822 기준 포맷 Thu, 21 Dec 2000 16:01:07 +0200
U Unix Epoch (January 1 1970 00:00:00 GMT) 로부터의 초 time() 참고
크리에이티브 커먼즈 라이센스
Creative Commons License

댓글을 달아 주세요


입력값에 대해서 특수문자 제거 및 숫자만 이뤄지도록 하고 사용을 한다.




var hp = '01012345678';
hp = hp.replace(/(^02.{0}|^01.{1}|[0-9]{3})([0-9]+)([0-9]{4})/,"$1-$2-$3"); 
크리에이티브 커먼즈 라이센스
Creative Commons License

댓글을 달아 주세요

[C#] URL에서 XML 해석

category 프로그램/C# 2018/08/26 09:10
[C#] URL에서 XML 해석


            XmlDocument doc = new XmlDocument();

            doc.Load("URL주소");

            XmlNodeList forecastNodes = doc.SelectNodes("rss/channel/item");

            foreach (XmlNode node in forecastNodes)
            {
                if (node["category"] != null)
                {
                    if (node["category"].InnerText == "NOTICE")
                    {
                        string parseFormat = "ddd, dd MMM yyyy HH:mm:ss zzz";
                        DateTimeOffset dto = DateTimeOffset.ParseExact(node["pubDate"].InnerText, parseFormat, System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None);
                        DateTextbox.Text = dto.ToString("yyyy년 MM월 dd일 (ddd) tt h시 mm분");
                        break;
                    }
                }
            }
크리에이티브 커먼즈 라이센스
Creative Commons License

댓글을 달아 주세요

Trudy
Trudy 님의 블로그
MENU
VISITOR 오늘485 / 전체418622