Remove item from Dropdownitems in a context menustrip(?)

void DeleteItem()
{
    foreach (ToolStripItem oSubitem in ListMenuItem.DropDownItems)
    {
        if (oSubitem is ToolStripMenuItem)
        {
            if (oSubitem.Text.StartsWith("Show"))
            {
                ListMenuItem.DropDownItems.RemoveAt(1);
            }
       }
   }
}

//Specific.FILE. 1 Line.Read & 1 Line Append Write,,,,,,


using System;
using System.IO;
using System.Text;

class Program
{
    public static void Main(string[] args)
    {
        if(args.Length == 1) 
        {
            RadioFileManage nm = new RadioFileManage();
            nm.open_radio_music(args[0]);
         }
    }
}       
class RadioFileManage
{
    public void open_radio_music(string fileName)
    {
            if (File.Exists(fileName))
            {
                using (StreamReader reader = new StreamReader(fileName, Encoding.Default))
                {
                    string line;
                    while ((line = reader.ReadLine()) != null)
                    {
                        int kk = line.IndexOf("2부");
                        if( !( kk >= 0))
                        {
                            if (true)
                            {
                            string ____path = @"default_" + fileName;
                            using (StreamWriter sw = File.AppendText(____path))
                            {
                                sw.WriteLine(line);
                            }
                       }
                }
            }
        }
    }
}


WindowsBase.dll/PresentationFramework.DLL/PresentationCore.DLL
WindowsBase.dll : WPF를 위한 기본 서비스 제공.
PresentationCore.dll
PresentationFramework.dll : using System.Windows.Controls

1. WPF개요

Windows Presentation Foundation
MS의 UI, 미디어 및 문서가 통합된 프로그래밍 모델(닷넷 3.0에 소개)
브라우저와 데스크톱에서 동시에 실행될 수 있는 프로그래밍 모델 제공.
Markup(XAML)과 코드 프로그래밍을 동시에 지원한다.
디자인이 가능한 프로그램 모델을 개발하였다. (Blend 프로그램으로 가능)
WPF는 DirectX를 Application UI에 통합했다.

2. WPF Architecture

 PresentationFramework
 PresentationCore
 Common Language Runtime

milcore 
 User32 DirectX 
 Kernel


PresentationFramework, PresentationCore : 순수한 관리코드로만 구성. 서로 분리되어 있음.
PresentationCore : API형태의 라이브러리, 컴포넌트 형태


WPF관련 어셈블리
WindowsBase.dll : WPF를 위한 기본 서비스 제공.
  DispatcherObject 
    Dispatcher : 복수의 작업을 대기시킬 수 있는 큐.
    namespace : System.Windows.Threading
    ※ STA : 실행 context에 하나의 쓰레드만 존재.
    Frame Queueing 가능 : Invoke(), BeginInvoke()

  DependencyObject
    WPF의 속성 시스템의 지원을 받기 위해 필요.
    프레임 수준의 바인딩 종속성, 손쉬운 데이터 공유 등을 객체 인스턴스에 저장하지 않고 가능.
    데이터 구조 중심 프로그래밍(XAML에서 이벤트와 액션까지 모델화하고 선언적으로 처리)

PresentationCore.dll
  Visual
    랜더링을 담당하는 객체. 컨트롤 클래스의 시작점. micore 컴포넌트와 밀접한 관련.
    WPF는 멀리 있는 객체를 먼저 그리고 가까이 있는 객체를 나중에 그린다.
    주요 기능 : 출력 표시. 변환, 클리핑, 적중 테스트, 경계 상자 계산.
    입출력, 이벤트 레이아웃 X

  UIElement
    Layout, 입력 및 이벤트 등의 핵심 기능을 담당.
    Measure : 크기를 정의, Arrange : 위치와 정렬. (2단계 레이아웃)
    입력과 Command의 분리 가능. -> CommandBinding으로 관리 가능.

PresentationFramework.dll
  FrameworkElement
    WPF 프레임워크 수준 요소 클래스와 UIElement 서비스를 연결해 주는 지점.
    레이아웃 시스템 정의 : 핵심 기능 손상 없이 새로운 레이아웃을 정의 가능.
    논리적 트리 : markup을 이용해 구조를 표현할 때 이용.
    객체 수명 이벤트 : Initialized, Loaded, Unloaded 세가지 지원.
    데이터 바인딩 및 동적 리소스 참조 지원 : Expression으로 바인딩 -> Framework는 해석.
    스타일 : 컨트롤의 외관을 변형하기 위해 사용.
    에니메이션 지원 

  Control
    탬플릿 지원 기능 : UI를 편리하게 수정 가능. 속성, 이벤트, Command, Template 기능 지원.
     XAML을 통한 탬플릿 정의 -> 랜더링 시 스트립트를 읽어 들여 반영

/*
csc.exe 사용하기. 옵션포함
*/

-----,----,---- 왠만한건,다 된다.
ex)csc.exe /reference:APMPublicLib.DLL,Newtonsoft.Json.Net20.DLL /out:GoodMorning.exe /recurse:*.cs
ex)csc.exe /reference:APMPublicLib.DLL,Newtonsoft.Json.Net20.DLL /out:GoodMorning.exe /recurse:*.cs
ex)csc.exe /reference:APMPublicLib.DLL,Newtonsoft.Json.Net20.DLL /out:GoodMorning.exe /recurse:*.cs
ex)csc.exe /reference:APMPublicLib.DLL,Newtonsoft.Json.Net20.DLL /out:GoodMorning.exe /recurse:*.cs
ex)csc.exe /reference:APMPublicLib.DLL,Newtonsoft.Json.Net20.DLL /out:GoodMorning.exe /recurse:*.cs

우선 c# 컴파일러의 주요 옵션들에 대해 알아보자.

입력 플래그 정의
/recurse 프로젝트의 하위 디렉터리 구조에 있는 C# 파일을 컴파일하도록 csc.exe에 알린다.
이 플래그는 와일드카드 구문을 지원한다.
/reference (/r) 현재 컴파일에서 참조할 외부 어셈블리를 지정하는 데 사용된다.
/addmodule 다중 파일 어셈블리에 포함할 모듈을 지정하는 데 사용된다.

[ 1]c# 컴파일러 입력 옵션

출력 플래그 정의
/out 생성할 어셈블리 이름을 지정한다. 이 플래그를 생략하면 출력 파일 이름은 *.dll 어셈블리의 경우에는 초기 입력 파일 이름을 기반으로, *.exe 어셈블리의 경우에는 Main() 메서드를 정의하는 클래스를 기반으로 지정된다.
/target (/t) 만들 어셈블리의 파일 형식을 지정한다.
/doc XML 문서 파일을 생성하는 데 사용된다.
/delaysign 강력한 이름의 서명 연기를 사용하여 어셈블리를 빌드할 수 있도록 한다.
/keyfile 어셈블리에 강력한 이름을 지정하는 데 사용되는 *.snk 파일 경로를 지정한다.

ComponentOne 프로젝트에 컨트롤 추가하고, 빌드하기
ComponentOne 프로젝트에 컨트롤 추가하고, 빌드하기
ComponentOne 프로젝트에 컨트롤 추가하고, 빌드하기


1.
본문에서는 새 프로젝트를 생성하고, ComponentOne 컨트롤을 도구상자로 불러온 후, 컨트롤을 폼 또는 프로젝트에 추가하는 과정을 설명하고 있습니다.

2.
도구상자에 컨트롤 추가하기

3.
ComponentOne 컨트롤들은 WinForms 에디션을 설치하는 동안 자동으로 비주얼 스튜디오 도구상자에 추가됩니다.
비고)
ComponentOne 컨트롤들은 WinForms 에디션을 설치는 ComponentOne 사이트에서 다운로드받을수 있습니다.

4.
도구모음에 컨트롤 추가하기

5.
컨트롤을 폼에서 사용후에 빌드하기

6. 
빌드가 안되면, 참조에 추가해서 다시 빌드하기



MSI와 EXE의 차이점


MSI 파일은 최신 Microsoft Windows 시스템에서 소프트웨어를 설치, 유지 관리 및 제거하는 데 사용되는 실행 파일입니다. 
EXE 파일은 '실행 파일'의 줄임말이며 확장명은 .exe입니다. 
실행 파일의 주된 목적은 컴퓨터에 이미 설치되어있는 파일을 설치하거나 실행하는 것입니다.

컴퓨터에 소프트웨어를 설치하려면 인터넷을 통해 구매하거나 무료로 다운로드하여 설치 프로그램을 다운로드해야합니다. 
소프트웨어, MIS 또는 EXE를 설치하는 동안 발생할 수있는 두 가지 유형의 파일이 있습니다. 
이 두 파일은 실행 가능 확장 파일입니다. 
이 두 파일은 동일한 기능을 수행하지만 설치 및 실행 프로그램은 다른 방식으로 수행합니다.

MSI 파일은 최신 Microsoft Windows 시스템에서 소프트웨어를 설치, 유지 관리 및 제거하는 데 사용되는 실행 파일입니다. 
'MSI'라는 용어는 Microsoft Installer라는 이름에서 파생되었으며 Windows Installer로 변경되었습니다. 
MSI 파일에 대한 정보는 설치 패키지에 저장되며 파일의 확장자는 .msi입니다. 
MSI 파일은 windows installer와 함께 사용되며 프로세스를 시작하거나 응용 프로그램을 실행하기 위해 EXE 파일이 필요합니다. 
MSI 파일은 Windows 업데이트 또는 응용 프로그램에 Microsoft에서 가장 일반적으로 사용됩니다.

MSI 파일을 두 번 클릭하면 Windows Installer가 화면에 팝업으로 나타나 패키지에서 파일 추출을 시작하고 사용자가 지정한 드라이브에 필요한 폴더와 파일을 만들고 패키지에 언급 된 바로 가기도 만들 수 있습니다 . MSI 파일은 MAC 컴퓨터에서 실행되지 않으며 적절한 변환 소프트웨어를 사용하여 EXE 파일로 변환해야합니다. MSI 파일 사용의 이점은 무인 설치를 위해 설계되었으므로 설치 관리자가 파일 다운로드를 위해 할당 된 키 입력 또는 클릭 기록을 유지할 수 있다는 것입니다. MSI 파일을 사용하면 얻을 수있는 또 다른 이점은 표준 GUI를 사용할 수 있다는 것입니다. 표준 GUI는 특정 수준으로 사용자 지정할 수 있으며 자신의 인터페이스를 만드는 복잡성을 제거합니다. MSI는 또한 주문형 설치 옵션을 제공합니다.
이 옵션은 컴퓨터에 부 파일 만 다운로드하고 응용 프로그램을 처음 실행할 때 나머지 파일을 다운로드합니다.

EXE 파일은 '실행 파일'의 줄임말이며 확장명은 .exe입니다. 
실행 파일의 주 목적은 다음과 같은 파일을 설치하거나 실행하는 것입니다.
컴퓨터에 이미 설치되어 있습니다. 
컴퓨터에 설치된 MSI 파일조차도 특정 파일을 실행하기 위해 하나 또는 두 개의 EXE 파일이 있습니다. 
EXE 파일을 사용하면 개발자가 설치 프로그램이 사용자와 상호 작용하는 방법에 대한 모든 자유를 얻을 수 있습니다. 
이러한 파일은 최신 게임 파일을 실행하는 데 가장 일반적으로 사용됩니다. 
이 게임 설치 프로그램은 대화식의 다채로운 인터페이스를 사용하여 패키지를 설치하는 동안 사용자를 즐겁게합니다.
EXE 파일은 거의 모든 운영 체제와 호환되지만 DOS, OpenVMS, Microsoft Windows, Symbian 및 OS / 2에서 가장 일반적으로 사용됩니다. 
실행 가능한 프로그램과 함께 많은 EXE 파일은 리소스라고하는 다른 구성 요소도 포함합니다. 
여기에는 실행 가능 프로그램이 GUI 용으로 사용할 수있는 비트 맵 및 아이콘이 포함될 수 있습니다. 
설치하는 동안 선택 사항을 기억할 수있는 MSI 파일과 달리 EXE 파일은 설치하는 동안 사용자가 '확인'또는 '다음'을 클릭해야 할 수 있습니다. 
EXE 파일은 위험한 파일로 간주되어 알려지지 않은 파일은 바이러스 또는 기타 악의적 인 루틴을위한 전송 시스템으로 사용할 수 있으므로 다운로드하지 않아야합니다.
소프트웨어 설치 프로그램을 개발할 때 선택할 실행 파일 유형을 결정하려면 설치 프로그램에 넣으려는 프로그램의 양과 노력 정도에 따라 결정하십시오. 
EXE를 사용하면 사용자 지정 가능한 옵션으로 설치 프로그램을 만들 수 있지만 MSI는 미리 설정된 표준을 준수하여 작업을 단순화합니다.


using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    public static void Main()
    {
        CalcManage nm = new CalcManage();
nm.running();
    }
}

class CalcManage
{
    public void running()
    {
        string[] arr = {""};
List<string> list = new List<string>(arr.ToList());

        list.Add("10.1.191.117");
list.Add("10.1.191.118");
list.Add("10.1.191.119");
list.Add("10.1.191.116");
list.Add("10.1.191.115");
list.Add("10.1.191.114");
list.Add("10.1.191.113");

        arr = list.ToArray();
        
foreach(var e in arr)
        {
            Console.WriteLine(e);
        }
/*------------------------------------------*/
display_packet(list, arr);
    }
    void display_packet(List<string> list, string[] arr)
    {
        foreach(var e in arr)
        {
            Console.WriteLine(e);
        }
    }

}

결과

10.1.191.117
10.1.191.118
10.1.191.119
10.1.191.116
10.1.191.115
10.1.191.114
10.1.191.113

10.1.191.117
10.1.191.118
10.1.191.119
10.1.191.116
10.1.191.115
10.1.191.114
10.1.191.113


/*
csc /reference:Newtonsoft.Json.Net20.dll,ServiceStack.dll,ServiceStack.Interfaces.dll,ServiceStack.ServiceInterface.dll /out:frm01.exe frm01.cs dbmsfrm9801.cs
csc /out:frm01.exe frm01.cs dbmsfrm9801.cs
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;//Marshal
using System.Timers;

class Program
{
    public static void Main(string[] args)
    {
        Application.Run(new CommonLibManage());
    }
}
class dbmsfrm9801 : Form
{
public IntPtr localHandle = IntPtr.Zero;
public IntPtr ____localHandle
{
get{ return localHandle;  }
set{ localHandle = value; }
}

public dbmsfrm9801()
{
localHandle = Handle;

this.Text = "[" + localHandle.ToString() + "]";
}
protected override bool ProcessCmdKey(ref Message m, Keys keyData)
{
const int WM_KEYDOWN = 0x0100;
if(m.Msg==WM_KEYDOWN)
{
switch(keyData.ToString())
{
case "Escape":
Close();
break;
}
}

return base.ProcessCmdKey(ref m, keyData);
}
}
class CommonLibManage : Form
{
public CommonLibManage()
{
//
}
protected override bool ProcessCmdKey(ref Message m, Keys keyData)
{
const int WM_KEYDOWN = 0x0100;
if(m.Msg==WM_KEYDOWN)
{
switch(keyData.ToString())
{
case "Return":
dbmsfrm9801 frm = new dbmsfrm9801();
Console.WriteLine(frm.____localHandle.ToString());
frm.Show();
break;
case "Escape":
Application.Exit();
break;
}
}

return base.ProcessCmdKey(ref m, keyData);
}
}

+ Recent posts