## [C#] 네트워크 공유 폴더에 있는 파일 실행하기 코딩정보/C# 2019-12-13 15:17:45 * * * 안녕하세요 코딩하는남자 코딩연습생입니다 저번 PPT 슬라이드 실행과 연계해서 네트워크 공유 폴더의 파일을 C#에서 Soket으로 접속하여 실행되도록 구현하는 방법을 이번에 설명을 해볼까 합니다 C#으로 PPT슬라이드로 파일 실행하기는 아래 링크로 확인하시면 됩니다 <https://codingman.tistory.com/37> [ [C#]파워포인트 슬라이드 구현하기 안녕하세요 코딩하는남자 코딩연습생입니다 오늘 벌써 4번째 글을 쓰고 있는거 같습니다ㅎㅎㅎ 요즘 회사 일이 많아 1일1포스팅을 지킬려고 힘들게 노력하다가 1일 1포스팅은 무조껀 지키고 시간이 있을때 많이 포.. codingman.tistory.com ](https://codingman.tistory.com/37) 그럼 다시 본론으로 돌아와서 당연히 네트워크 공유 폴더에 접근 할려면 Soket부터 구현을 해야 겠죠? [Source Code] using System.Net; using System.Net.Sockets; using System.Runtime.InteropServices; 다음 3개의 using문을 선언해 줍니다. 다음은 네트워크 접속시 인증과 윈도우 인증을 위한 구문 입니다 [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; } // API 함수 선언 [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); // API 함수 선언 (공유해제) [DllImport("mpr.dll", EntryPoint = "WNetCancelConnection2", CharSet = CharSet.Auto)] public static extern int WNetCancelConnection2A(string lpName, int dwFlags, int fForce); //PPT 함수 선언 [DllImport("user32.dll", EntryPoint = "FindWindow", SetLastError = true)] static extern IntPtr FindWindow(IntPtr ZeroOnly, string lpWindowName); //PPT 함수 선언 [DllImport("user32.dll", SetLastError = true)] static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent); //PPT 함수 선언 [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)] public static extern bool SetWindowText(IntPtr hwnd, String lpString); [DllImport("user32")] private static extern bool SetForegroundWindow(IntPtr handle); [DllImport("User32")] private static extern int ShowWindow(IntPtr hwnd, int nCmdShow); private string FileName = ""; 이렇게 구조체와 Dll파일을 Import 시켜줍니다 이제 준비가 되었으면 공유 폴더에 접속을 해야겠죠? public int ConnectRemoteServer(string server) { int capacity = 64; uint resultFlags = 0; uint flags = 0; System.Text.StringBuilder sb = new System.Text.StringBuilder(capacity); NETRESOURCE ns = new NETRESOURCE(); ns.dwType = 1; // 공유 디스크 ns.lpLocalName = null; // 로컬 드라이브 지정하지 않음 ns.lpRemoteName = server; ns.lpProvider = null; int result = 0; if (server == @"\\아이피주소\폴더명$") { result = WNetUseConnection(IntPtr.Zero, ref ns, "공유폴더접속암호", "폴더이름", flags, sb, ref capacity, out resultFlags); } else { result = WNetUseConnection(IntPtr.Zero, ref ns, "공유폴더접속암호", "폴더이름", flags, sb, ref capacity, out resultFlags); } return result; } 이제는 반대로 접속을 했다면 반대로 해제도 해야겠죠? public void CencelRemoteServer(string server) { WNetCancelConnection2A(server, 1, 0); } 이제 버튼을 통해 공유 폴더에 접근하는 구문입니다 ConnectRemoteServer(@"\\아이피주소\폴더이름"); 그 다음 저의 경우 공유폴더에 있는 ppt파일을 실행 시키도록 구현했는데요 위의 ppt만들기 링크와 이어져 있습니다 FileName = @"\\아이피번호\폴더이름\파일이름.PPT"; PowerPoint.Application pptapp = new PowerPoint.Application(); pptapp.Visible = MsoTriState.msoCTrue; PowerPoint.Presentation pptPres = pptapp.Presentations.Open(FileName, MsoTriState.msoCTrue, MsoTriState.msoCTrue, MsoTriState.msoCTrue); PowerPoint.SlideShowWindow slideWindow = pptPres.SlideShowSettings.Run(); 이렇게 하시면 공유폴더에 있는 특정 파일을 바로 파워포인트 슬라이드 모드로 실행이 됩니다 전에 글쓴 C#으로 파워포인트 슬라이드 실행하기와 이어서 같이 사용하시면 공유폴더에 있는 파일을 바로 파워포인트 슬라이드로 실행하는게 완성됩니다 #파워포인트 #네트워크 #c# #Soket #공유폴더접속 #슬라이드 실행 #네트워크접속
(*No embedded English lines found. Add translations later.*)