1. 2013.01.08 IPC
  2. 2013.01.08 0
  3. 2013.01.07 c# 오피스 참조한 프로젝트 배포 시 필요한 dll
  4. 2013.01.03 레지스트리
  5. 2013.01.02 c#dll c++에서 사용 2
  6. 2013.01.02 assembly
  7. 2012.12.20 꼮꼮읽어보기
  8. 2012.12.18 msdn
  9. 2012.12.18 UTF-8, UNICODE, ANSI - 인코딩에 대하여
  10. 2012.12.18 참조자 & 포인터

IPC

제33장 IPC
1.IPC
가.IPC란
나.여러 가지 방법


다.메시지

#define WM_IPC WM_USER+1

 HWND hWnd2 = FindWindow(NULL,"IPCMessage2");

if(hWnd2 != NULL)

SendMessage(hWnd2,WM_IPC,(WPARAM)1234,(LPARMA)0);


#define WM_IPC WM_USER+1 

case WM_IPC:

//wParam 으로 메시지 넘어 옴

char str[128];

wsprintf(str, %d, wParam);

return 0;


FindWindow 함수로 IPCMessage2 윈도우 핸들을 구한 후 WM_IPC 메시지를 IPCMessage2로 전달하되 이때 wParam으로 전달하고자 하는 정수를 넘긴다

wParma은 8바이트


=> 정수와 같은 비교적 크기가 크지 않은 정보를 전달할때 , 단순한 어떤 사실을 통보하기 위한 목적 


라.WM_COPYDATA


2.아톰
가.아톰 테이블
나.로컬 아톰 테이블
다.글로벌 아툼
라.윈도우 클래스 아톰
3.메일 슬롯
가.메일 슬롯
나.메일 슬롯 서버
다.메일 슬롯 클라이언트


메일슬롯은 네트웍 통신은 가능하지만 단방향으로만 통신이 가능하며 클라이언트가 보낸 메시지를 서버가 알 수 없다는 단점이 있다

그러나 메일슬롯은 도메인 내의 모든 메일 슬롯에게 한꺼번에 메시지를 전달 할 수 있다는 장점을 가진다


4.파이프

연속적인 바이트 스트림을 교환할 때 


가.이름없는 파이프

부모 자식간의 단방향 통신에만 사용 

CreatePipe()
나.파이프

양방향으로 데이터를 주고 받을 수 있음

파이프 서버 : 파이프를 최초로 만듬

파이프 클라이언트 : 만든 파이프에 접속

복수개의 클라이언트 존재 할 수 있음 


CreateNamedPipe()

lpName \\서버명\pipe\파이프이름


CreateFile로 파이프에 접속


ConnectNamedPipe()


ReadFile, WriteFile로 상호 통신


다.파이프 인스턴스


5.DDE
가.DDE 소개
나.DDE의 구성 요소
다.DDE 메시지
라.DDEExam
마.lParam
바.기타


http://carpedm20.blogspot.kr/2012/08/7-ipc-1.html


'c/c++' 카테고리의 다른 글

함수에서 값을 반환하는 방법  (0) 2013.01.18
CAtlArray 예제  (0) 2013.01.10
레지스트리  (0) 2013.01.03
참조자 & 포인터  (0) 2012.12.18
static 정적 변수 정리  (0) 2012.12.18

0

http://forum.falinux.com/zbxe/?mid=gcc&document_srl=406260


서비스

http://crowback.tistory.com/218

'and so on' 카테고리의 다른 글

개발 문서화 방법  (0) 2014.03.11
문서작성의 5가지 口訣  (0) 2013.03.04
assembly  (0) 2013.01.02
RegAsm  (0) 2012.09.21
아이디어가 고갈되었을 때의 처방전 20  (0) 2012.08.28

c# 오피스 참조한 프로젝트 배포 시 필요한 dll

Microsoft.Office.Interop.Excel.DLL

 위치 : C:\Program Files\Microsoft Visual Studio 10.0\Visual Studio Tools for Office\PIA\Office14


Microsoft.Office.Interop.Word.dll

 위치 : C:\Program Files\Microsoft Visual Studio 10.0\Visual Studio Tools for Office\PIA\Office14


Microsoft.Vbe.Interop.dll

 위치 : C:\Program Files\Microsoft Visual Studio 10.0\Visual Studio Tools for Office\PIA\Office14


office.dll

 위치 : C:\Program Files\Microsoft Visual Studio 10.0\Visual Studio Tools for Office\PIA\Office14


stdole.dll

 위치 : C:\Program Files\Microsoft Visual Studio 10.0\Visual Studio Tools for Office\PIA\Common


파워포인트는 내가 안써서 지움




vs가 설치되어 있지 않을 때 필요한 dll

msvcp100.dll

 위치 : C:\Program Files\Microsoft Visual Studio 10.0\VC\redist\x86\Microsoft.VC100.CRT

msvcr100.dll

 위치 : C:\Program Files\Microsoft Visual Studio 10.0\VC\redist\x86\Microsoft.VC100.CRT


dll 알아 내려고 설치 프로젝트까지 생성했다




* 나는 dll 생성하여서 오피스 관련 dll이 같이 안생겼는데

exe 파일로 생성하면 debug, release 폴더에 저 dll도 생기는 것 같음



*오피스 참조시에는 개발한 PC의 오피스와 

 사용될 PC의 오피스 고려해야 함

따라서 참조 시에 COM 탭에서 오피스 추가하는 것이 아닌

.NET 탭에서 해줌

'and so on > c#' 카테고리의 다른 글

.NetFramework 설치 확인 하기  (0) 2013.01.17
C# PPT 내용 읽기  (0) 2013.01.15
c#dll c++에서 사용  (2) 2013.01.02
C++ DLL 함수 char*를 C#에서 읽어 오기  (0) 2012.09.26
C# - Excel 내용 읽어오기  (0) 2012.09.17

레지스트리

#include <windows.h>


HKEY key;

DWORD dwDisp;

DWORD data=0;

char * value = "value";



//키 생성 

RegcreateKyeEx(HKEY_CLASSES_ROOT,"Software\\Microsoft\\NET Framework Setup\\NDP\\",0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&key, &dwDisp);

// 값 등록

RegSetValueEx(key, NULL, 0, REG_SZ(LPBYTE)value,strlen(value));

//읽기위한 키 오픈

RegOpenKeyEx(HKEY_LOCAL_MACHINE,"Software\\Microsoft\\NET Framework Setup\\NDP\\", 0,KEY_READ, &hKey);

// "Install"값 data에 읽기 

RegQueryValueEx(hKey, "Install", NULL, NULL,(LPBYTE)&data, &dwBufLen);

RegCloseKey(hkey);



#include <Shlwapi.h> // SHDeletekey()

#pragma comment(lib, "shlwapi.lib")


// 키 삭제 (삭제하려는 키를 Open 후 SHDeleteKey 해줌)

SHDeletekey(hKey,"")



'c/c++' 카테고리의 다른 글

CAtlArray 예제  (0) 2013.01.10
IPC  (0) 2013.01.08
참조자 & 포인터  (0) 2012.12.18
static 정적 변수 정리  (0) 2012.12.18
[DLL] dll import하기  (0) 2012.12.17

c#dll c++에서 사용

- c#


using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;


using System.Runtime.InteropServices;


namespace MyEngin

{

    [Guid("DBE0E8C4-1C61-41f3-B6A4-4E2F353D3D05")]

    public interface IManagedInterface

    {

        int add(int a, int b);

        int printHi();

    }

    [Guid("C6659361-1625-4746-931C-36014B146679")]

    public class InterfaceImplementation : IManagedInterface

    {

        public int add(int a, int b)

        {

            return a + b;

        }

        public int printHi()

        {

            Console.WriteLine("안녕");

            return 1;

        }

    }

}


속성 

응용 프로그램 -> 어셈블리 정보-> 어셈블리를 COM에 노출 체크

빌드->COM Interop 등록 체크



visual studio 명령 프롬프트

regasm MyEngin.dll /tlb MyEngin.tlb


- c++



#include <Windows.h>

#include <stdio.h>


#pragma warning (disable: 4278)


#import "MyEngin.tlb" no_namespace named_guids



void main()

{

IManagedInterface *csi=NULL; 


   CoInitialize(NULL);


   HRESULT hr = CoCreateInstance(CLSID_InterfaceImplementation,NULL,CLSCTX_INPROC_SERVER,IID_IManagedInterface,reinterpret_cast<void**>(&csi));

   int a=GetLastError();

   if(SUCCEEDED(hr))

   {

  int b=csi->add(2,3); //C# dll에 있는 함수

  

  printf("%d\n", b);

  csi->printHi();

  getchar();

  CoUninitialize();

   }


}



* GUID는 

C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\guidgen.exe로 생성 가능하다


 * 다른 PC에서 dll 사용 시 regasm 이용하여 tlb 등록하여야 함


* CoCreateInstance()에서 0x80070002 에러 발생 시

regasm MyEngin /codebase 한 후 

c++에서 빌드 하면 됌



assembly

http://network-dev.tistory.com/409

'and so on' 카테고리의 다른 글

문서작성의 5가지 口訣  (0) 2013.03.04
0  (0) 2013.01.08
RegAsm  (0) 2012.09.21
아이디어가 고갈되었을 때의 처방전 20  (0) 2012.08.28
작업 디렉터리  (0) 2012.08.13

꼮꼮읽어보기

http://bektekk.wo.to/

'and so on > 문자열' 카테고리의 다른 글

CString 사용  (0) 2013.01.31
msdn  (0) 2012.12.18
UTF-8, UNICODE, ANSI - 인코딩에 대하여  (0) 2012.12.18
멀티/유니->utf8, utf8->멀티/유니  (0) 2012.12.10
형변환 주의하기  (0) 2012.12.10

msdn

http://msdn.microsoft.com/en-us/library/ms235631(v=vs.80).aspx

'and so on > 문자열' 카테고리의 다른 글

CString 사용  (0) 2013.01.31
꼮꼮읽어보기  (0) 2012.12.20
UTF-8, UNICODE, ANSI - 인코딩에 대하여  (0) 2012.12.18
멀티/유니->utf8, utf8->멀티/유니  (0) 2012.12.10
형변환 주의하기  (0) 2012.12.10

UTF-8, UNICODE, ANSI - 인코딩에 대하여


 http://blog.naver.com/declspec?Redirect=Log&logNo=10092640244

'and so on > 문자열' 카테고리의 다른 글

꼮꼮읽어보기  (0) 2012.12.20
msdn  (0) 2012.12.18
멀티/유니->utf8, utf8->멀티/유니  (0) 2012.12.10
형변환 주의하기  (0) 2012.12.10
[문자열] 아스키코드, 멀티바이트, 유니코드  (0) 2012.12.10

참조자 & 포인터


 1. 참조자랑 포인터는 것모습만 다르다. 

참조자 : root.main.MAIN();


포인터 : if(root.main)

root.main->MAIN();

 2. 참조자는 널값을 가질수 없다.

 

 3. 포인터는 배열도 받는다.

 void Func(char& pC);

 char c; // 이것만 받겠다.

 char* pc;

 char ac[123];

 Func(&c);

 Func(pc);

 Func(ac);

'c/c++' 카테고리의 다른 글

IPC  (0) 2013.01.08
레지스트리  (0) 2013.01.03
static 정적 변수 정리  (0) 2012.12.18
[DLL] dll import하기  (0) 2012.12.17
디렉토리 파일 개수 구하기(하위 디렉토리 포함 )  (0) 2012.12.12