개요

WM_SAKURAAPIEmbryo에 송신하는 것으로써, 임의의 외부 프로세스가 Embryo를 제어하거나 프로세스 내부의 정보를 Low cost하게 확실히 얻을 수가 있습니다.

WM_SAKURAAPIRegisterWindowMessage API 에 "Sakura" 라고 하는 캐릭터 라인을 건네주는 것으로 정의 됩니다.

WM_SAKURAAPI = RegisterWindowMessage("Sakura"); 

SAKURA API 가 사용하는 윈도우 메세지는 WM_SAKURAAPI 만으로, 구체적인 커멘드는 wParamlParam 으로 건네받습니다.

API 일람

SA_EXECUTEREMAKEMENU  0  
SA_EXECUTEREWRITEFMO   1  
SA_EXECUTEWINDOWSTATESWITCH   2  
SA_EXECUTERELOADSHIORI   3  
SA_EXECUTENOTIFYOTHERGHOSTNAME   4  

SA_GETHEADCOLLISIONRECTSAKURA   128  
SA_GETFACECOLLISIONRECTSAKURA   129  
SA_GETBUSTCOLLISIONRECTSAKURA   130  
SA_GETCENTERPOINTSAKURA   131  
SA_GETABSOLUTEKINOKOFIELDCENTERPOINTSAKURA   132  
SA_GETHEADCOLLISIONRECTKERO   133  
SA_GETFACECOLLISIONRECTKERO   134  
SA_GETBUSTCOLLISIONRECTKERO   135  
SA_GETCENTERPOINTKERO   136  
SA_GETABSOLUTEKINOKOFIELDCENTERPOINTKERO   137  
SA_GETPROCESSID   138  
SA_GETSHAREDMEMORY   139  
SA_GETGHOSTSTATE   140  

SA_NOTIFYEVENT   256  

SAKURA API/1.0

SA_EXECUTEREMAKEMENU

인수

pop-up menu를 재구축. 기동중에 파일 구성이나 디렉토리 구성이 변화해도 Embryo 의 메뉴 트리는 그것을 즉석에서 반영하지 않지만, 이 커맨드를 보내는 것으로 리로드를 지시 할 수 있다.

SA_EXECUTEREWRITEFMO

인수

FMO (File Mapping Object - SpecMemoryObject 참조) 의 rewrite.

SA_EXECUTENOTIFYOTHERGHOSTNAME

인수

NOTIFY OtherGhostname을 실행.

SAKURA API/1.1

SA_GET????COLLISIONRECTSAKURA

현재 표시되어 있는 sakura 측 표면의 머리 부분, 얼굴, 가슴 판정 영역을 rect 좌표값으로 돌려준다.

SA_GETCENTERPOINTSAKURA

인수

현재 표시되어 있는 sakura 측 표면의 중심 x 좌표 및 y 좌표를 좌표값으로 돌려준다.

SA_GET????COLLISIONRECTKERO

현재 표시되어 있는 kero 측 표면의 머리 부분, 얼굴, 가슴 판정 영역을 rect 좌표값으로 돌려준다. lParam 의 사양은 128 (SA_GET????COLLISIONRECTSAKURA) 과 같다.

SA_GETCENTERPOINTKERO

인수

현재 표시되어 있는 kero 측 표면의 중심 x 좌표 및 y 좌표를 좌표값으로 돌려준다.

SA_GETGHOSTSTATE

인수

고스트의 현재의 상태를 돌려준다. 반환값은 다음과 같은 의미를 가진다.

SAKURA API/1.2

SAKURA API/1.2 는 절대 버섯 영역(AKF; Absolute Kinoko Field - 버섯 발생 영역)을 취득하기 위한 리퀘스트입니다.

SA_GETABSOLUTEKINOKOFIELDCENTERPOINTSAKURA

인수

현재 표시되어 있는 sakura 측 표면의 절대 버섯 영역 중심 좌표의 x 좌표 및 y 좌표를 좌표값으로 돌려준다.

SA_GETABSOLUTEKINOKOFIELDCENTERPOINTKERO

인수

현재 표시되어 있는 kero 측 표면의 절대 버섯 영역 중심 좌표의 x 좌표 및 y 좌표를 좌표값으로 돌려준다. lParam 의 사양은 SA_GETABSOLUTEKINOKOFIELDCENTERPOINTSAKURA 와 같다.

SAKURA API/1.3

SAKURA API/1.3 은 Sakura 에의 이벤트 통지를 실현하기 위한 리퀘스트입니다.

SA_GETPROCESSID

인수

Sakura 프로세스의 프로세스 ID를 돌려줍니다.

SA_GETSHAREDMEMORY

인수

Sakura 프로세스 공간내에 항상 존재하는 8192 바이트의 정적 메모리를 가리키는 포인터를 돌려줍니다. 메모리는 9개의 슬롯이 존재(8192 *9)해, lParam의 값으로 각 슬롯의 포인터값을 취득할 수 있습니다.

외부 프로세스는 이상 2가지의 정보를 이용해 Sakura 에 이벤트를 통지합니다. 구체적으로는, 이벤트를 통지하고 싶은 프로세스는 우선 SA_GETPROCESSID 로 Process ID 를 얻어, 그것을 OpenProcess 해, SA_GETSHAREDMEMORY 로 얻은 포인터에 대해서 WriteProcessMemory로 필요한 정보를 기입해, 그 후 다음과 같이 정의 되는 이벤트 메세지를 Sakura 에게 보냅니다. 이벤트를 수신한 Sakura 는 이벤트를 인식 함과 동시에 SHAREDMEMORY 의 각 슬롯으로부터 정보를 꺼내, 적절한 동작(주로 SHIORI 에의 이벤트 통지)을 합니다.

-1 의 슬롯은 많은 경우 특수한 의미를 가집니다. 예를 들면 SAKURA API/1.3 을 SHIORI/2.2 의 이벤트 통지로서 사용하는 경우, 슬롯 0∼7 은 각각 Reference0∼7 으로 대응하며, 슬롯 -1 은 이벤트 식별자로서 사용됩니다.

SA_NOTIFYEVENT

인수

이벤트 발생을 Sakura 에 통지합니다. 이 메세지는 이벤트가 발생했다고 하는 이외 어떤 정보도 가지지 않습니다. 송신자는 이 메세지를 보내기 전에 반드시 SHAREDMEMORY 에 적절한 값을 세트해 두지 않으면 안됩니다.

SAKURA API/1.4

SA_EXECUTEWINDOWSTATESWITCH

인수

최소화를 한다. 이미 최소화 상태였던 경우에는 복원한다.

SAKURA API/1.5

SA_EXECUTERELOADSHIORI

인수

현재 고스트의 Shiori 를 다시 로드한다.


CategorySpec


Nanika: SpecSakuraApi (2008-08-10 19:56:17에 localhost가(이) 마지막으로 수정)