[C#]네트워크 폴더 접근 C# 2008. 9. 18. 13:14
같은 네트워크 상에서의 네트워크 연결이 된 공유 폴더에 접근하기 위해서는

WNet을 이용해야한다.

result 변수 값이 0 이면 접근 허용

공유 폴더 경로 문제는 1203 오류 코드

사용자/암호가 일치 하지 않다면 1326 오류 코드가 발생한다.

명시적으로 로컬 드라이브를 지정하고 싶다면 NETRESOURCE 구조체의 lpLocalName 필드에 

드라이브 값을 설정이 가능하다.

이미 네트워크 드라이브 사용 중이라면 오류 코드 85

사용 가능한 로컬 드라이브 (Z, Y, X, W, 등의 순서) 이름의 선택을 시스템에게 맞기고 싶다면 flags 값에 0x80 을 주면 시스템이 적절한 로컬 드라이브 이름을 선택해 줄 것이다.

capacity 값은 공유 폴더의 경로를 담을 수 있도록 충분히 주어야 하지만
 
그렇지 않을 경우 오류 코드 234를 반환할 것이다.

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
        public struct NETRESOURCE
        {
            public uint dwScope;
            public uint dwType;
            public uint dwDisplayType;
            public uint dwUsage;
            public string lpLocalName;
            public string lpRemoteName;
            public string lpComment;
            public string lpProvider;
        }

        [DllImport("mpr.dll", CharSet = CharSet.Auto)]
        public static extern int WNetUseConnection(
         IntPtr hwndOwner,
         [MarshalAs(UnmanagedType.Struct)] ref NETRESOURCE lpNetResource,
         string lpPassword,
         string lpUserID,
         uint dwFlags,
         StringBuilder lpAccessName,
         ref int lpBufferSize,
         out uint lpResult);



public void setRemoteConnect(string strRemoteConnectString, string strRemoteUserID, string strRemotePWD)
        {
            int capacity = 64;
            uint resultFlags = 0;
            uint flags = 0;
            try
            {
                if ((strRemoteConnectString != "" || strRemoteConnectString != string.Empty) &&
                   (strRemoteUserID != "" || strRemoteUserID != string.Empty) &&
                   (strRemotePWD != "" || strRemotePWD != string.Empty))
                {
                    System.Text.StringBuilder sb = new System.Text.StringBuilder(capacity);
                    NETRESOURCE ns = new NETRESOURCE();
                    ns.dwType = 1;
                    ns.lpLocalName = null;
                    ns.lpRemoteName = @strRemoteConnectString;
                    ns.lpProvider = null;

                    int result = WNetUseConnection(IntPtr.Zero, ref ns, strRemotePWD, strRemoteUserID, flags, sb, ref capacity, out resultFlags);
                }
            }

   catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }

WebBrowser 컨트롤 사용 시 고려 사항

WebBrowser 컨트롤을 사용할 때는 다음 사항을 고려해야 합니다.
  • WebBrowser 컨트롤은 문서를 비동기적으로 탐색합니다. WebBrowser1.Navigate를 호출하면 문서를 완전히 로드하기 전에 해당 Visual C# 응용 프로그램에 컨트롤이 반환됩니다. 포함된 문서를 자동화할 계획이라면 해당 문서가 완전히 로드된 시기를 알리도록 NavigateComplete2 이벤트를 사용해야 합니다. Office 문서 개체에 대한 참조를 가져오기 위해 전달되는 WebBrowser 개체의 Document 속성(이전 코드에서 oDocument로 설정됨)을 사용합니다.
  • WebBrowser 컨트롤은 메뉴 병합을 지원하지 않습니다.
  • Internet Explorer 최신 버전(5.0 이상)에서도 아래의 코드를 사용하여 도킹된 도구 모음을 표시할 수 있습니다.
     // This is a toggle option, so call it once to show the   // toolbars and once to hide them. This works with Internet Explorer 5  // but often fails to work properly with earlier versions.    Object refmissing = System.Reflection.Missing.Value;  axWebBrowser1.ExecWB(SHDocVw.OLECMDID.OLECMDID_HIDETOOLBARS, 
    Object refmissing = System.Reflection.Missing.Value;
     axWebBrowser1.ExecWB(SHDocVw.OLECMDID.OLECMDID_HIDETOOLBARS,
    SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DONTPROMPTUSER,
    ref refmissing, ref refmissin);
  • 하나의 프로젝트에서 둘 이상의 WebBrowser 컨트롤을 사용하여 동일한 종류의 Office 문서를 로드하면 문제가 발생하는 것으로 알려져 있습니다. 즉, 컨트롤 모두 Word 문서만 로드하거나 Excel 스프레드시트만 로드하는 경우 문제가 발생합니다. 프로젝트당 컨트롤을 하나만 사용하고 한 번에 한 가지 문서만 탐색하는 것이 좋습니다.

    가장 일반적인 문제는 Office 명령 모음이 사용할 수 없는 것처럼 나타나는 것입니다. 같은 폼에 WebBrowser 컨트롤이 두 개 있고, 두 컨트롤 모두 Word 문서를 로드하며, 앞의 예제 코드를 사용하여 도구 모음을 표시한 경우 하나의 도구 모음만 활성화되어 제대로 작동합니다. 다른 도구 모음은 사용 불가능하게 될 수 있습니다.
  • 다른 명령 단추의 Click 이벤트(또는 적절한 코드 부분)에서 WebBrowser의 현재 내용을 지우려면 아래의 코드를 사용하여 기본 빈 페이지로 이동하도록 합니다.
       AxWebBrowser1.Navigate("about:blank");

참조

WebBrowser 컨트롤을 사용하는 것에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.

304562 INFO: Visual Studio .NET Does Not Provide an OLE Container Control for Win Forms

243058 HOWTO: Use the WebBrowser Control to Open an Office Document

162719 HOWTO: Use the WebBrowser Control from Visual Basic 5.0

202476 BUG: Cannot Edit Word Document in OLE or WebBrowser Control

188271 HOWTO: Print Contents of the Web Browser Control From VB

191692 PRB: Shdocvw.dll Is Not Included in PDW Setup Package

238313 PRB: Accessing the Internet Explorer Document Object Model From Visual Basic

[C#]WinAPI적용 C# 2008. 7. 31. 01:32
using System.Runtime.InteropServices 네임스페이스 추가
[DIlImport("라이브러리")]

int GetWindowText(HWND hWnd, LPTSTR lpString, int nMaxCount);

을 C#으로 변형하면

public
static extern int GetWindowText(int hWnd, StringBuilder lpString, int nMaxCount);

출처 : http://jijanghun.tistory.com/21
http://www.pinvoke.net/default.aspx/user32.SendInput

SendInput위한 Mouse,Keyboard,Input구조체 정의
[C#]Namespace 정리 C# 2008. 7. 30. 17:15

Mcrosoft.JSharp : JSharp.NET 을 사용한 컴파일과 코드 생성 제공
Mcrosoft.VisualBasic : VisualBasic.NET 을 사용한 컴파일과 코드 생성 제공
Mcrosoft.Win32 : 윈도우 레지스트리 참조와 윈도우 시스템 이벤트 제공


System : 일반적으로 사용되는 값 타입과 레퍼런스 데이타 타입, 이벤트와 이벤트 핸들러, 인터페이스 , 속성, 예외 등을 포함하며, 가장 중요한 네임스페이스이다.
System.Collections : 리스트와 큐 배열, 해쉬 테이블, 사전 등과 같은 컬렉션 타입 제공
System.ComponentModel : 컴포넌트의 런타임과 디자인 타임 때 사용 제공
System.Configuration : .NET 프레임 워크 설정 세팅을 위해 참조 제공
System.Data : ADO.NET 타입 제공
System.Data.SqlClient : Sql Server.NET 데이터 타입 제공
System.Data.SqlTypes : 윈시SQL서버 데이터 타입 제공
System.Diagnostics : 디버깅과 트래킹을 위한 애플리케이션, 윈도우의 이벤트 로그 클래스제공
System.DirectoryService : LDAP이나 NDS와 같은 서비스 제공자를 사용하여 동적 디렉토리 참조 제공
System.Drawing : 윈도우 GDI+  그래픽 타입 제공
System.Globalization : 언어 수용과 관련되 타입, 스티링 정렬 순서, 나라/지역, 달력,날짜, 통화와 같은 숫자 형태 제공
System.IO : 스트림과 파일에 읽고 씀
System.Messaging : 메시지가 큐에 넣어 보내고 받고 관리하는 기능(MSMQ) 제공
System.Net : DNS와 HTTP같은 간단한 네트위크 프로토콜 API제공
System.Net.Sockets : TCP/UDp 소켓 API제공
System.Reflection : 적재된 타입과 멤버 참조 제공
System.Reflection.Emit : 메타데이터/IL 생성과 PE파일 생성 제공
System.Resources 애플리케이션 리소스위 생성과 관리 제공
System.Runtime.InteropService : COM 객체와 원시 API 참조 제공
System.Runtime.Remoting : 분산 객체의 생성과 설정 제공
System.Runtime.Remoting.Channels : 원격 채널관리와 채널 싱크(sink) 제공
System.Runtime.Remoting.Channels.Http : HTTP(SOAP) 채널 관리 제공
System.Runtime.Remoting.Channels.Tcp : TCP(이진) 채널 관리 제공
System.Runtime.Remoting.Lifetime : 원격 객체의 생명주기 관리 제공
System.Security : CLR 보안 시스템 하의 참조 제공
System.Security.Permissions : 정책에 기반한 오퍼레이션과 리소스 참조 제한 제공
System.Security.Policy : CLR 보안 정책 시스템에 적용될 규칙이 정의된 코드 그룹, 멤버쉽 상태 , 증거 제공
System.Security.Principal : 규칙 기반의 보안이 사용된 주요 클래스, 인터페이스, 열거형 제공
System.ServiceProcess : 윈도우 서비스 설치와 실행 제공
System.Text : ASCII, 유니코드, UTF-7, UTF-8 과 같은 텍스트 인코딩과 전환 제공
System.Text.RegularExpression! : 이미 만들어져 있는 정규 표현식 엔진 참조 제공
System.Threading : 멀티 쓰레드 프로그래밍을 위한 클래스와 인터페이스 제공
System.Timers : 특정한 시간 간격으로 이벤트를 발생시키는 타이머 컴포넌트 제공
System.Web : HttpApplication, HttpRequest. HttpResponse 와 같은 ASP.NET 클래스에서 사용하는 기능을 포함한 브라우저/ 서버간의 통신 제공
System.Web.Configuration : ASP.NET설정 클래스와 열거형 제공
System.Web.Services : 웹 서비스 제작과 사용 제공
System.Web.Services.Description : WSDL을 사용한 웹 서비스 제공
System.Web.Services.Discovery : DISCO를 통한 웹 서비스 제공
System.Web.SessionState : ASP.NET세션 상태 참조 제공
System.Web.UI : ASP.NET 웹 페이지와 컨트롤 생성
System.Web.UI.Design : 웹 폼을 제공하기 위한 디자인 제공
System.Web.UI.Design.WebControls : 웹 컨트롤을 제공하기 위한 다지인 제공
System.Web.UI.HtmlControls : HTML 서버 컨트롤 생성 제공
System.Web.UI.WebControls : Web 서버 컨트롤 생성 제공
System.Windows.Forms : 윈도우 폼 기반의 사용자 인터페이스와 컨트롤 생성 제공
System.Windows.Forms.Design : 윈도우 품을 위한 디자인 제공
System.Xml : 표준 XML제공
System.Xml.Schema : 표준 XML스키마 제공
System.Xml.Serialization : XML문서 또는 스트림 객체의 직렬화 제공
System.Xml.XPath : XPath 파서와 평가 엔진 제공
System.Xml.Xsl : XSL전환 제공

[C#]MSDN C# 2008. 7. 17. 15:21

Visual C#에 대한 MSDN 사이트 이다.

하지만 Java를 이용하던 개발자들을 위한 비교를 해 둔 사이트.

http://msdn.microsoft.com/ko-kr/library/ms228360(VS.80).aspx

[C#]환경변수 설정 C# 2008. 7. 4. 15:06
Visual Studio .Net의 콘솔 프로젝트를 이용하여 프로그램을 작성하여도 좋지만

Windows Application 이 전의 Console 부분을 먼저 정확히 집고 가야합니다.

그러기 위해서는 번거롭더라도 .Net 툴이 아닌 메모장이나 EditPlus등과 같은 툴을

이용하여 연습하는 것이 필요합니다.

그러기 위해서는 csc.exe(C# 컴파일러)에 대한 환경 설정이 필요합니다.

PATH를 잡기위해 경로에 C:\Windows\Microsoft.NET\Framework\v2.0xxxx

을 추가해 주면 됩니다.

아 이때 참고하실 점은 콘솔 창이 띄워져 있으면 콘솔 창을 닫고 해주세요

콘솔 창이 열린 상태라면 적용이 안된답니다.