【伺か】Ghostからアクションを起こしてほしかったので、ユーザーの画面の覗き込むコードを書いた【yaya】
ukagakaできるようになること。
Ghostはあなたがどんなアプリを起動しているか、どんなサイトを見ているのかを知ることができるようになります。
内容は単純で、現在アクティブになっているウィンドウのタイトルを取得するものです。
環境
- windows10 64bitでコンパイルしています。
活用
カテゴリとして旅行や料理についてユーザーが検索していればそれを正規表現などで拾って会話の起点にすると自然な感じになると思います。
ほかにもエッチな単語なんかもGhostの反応としてはイメージしやすいですね。
C#のコード
using System;
using System.Runtime.InteropServices;
using System.Text;
class Win32Api {
[DllImport("user32.dll")]
public static extern IntPtr GetForegroundWindow();
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern int GetWindowText(IntPtr hWnd, StringBuilder lpString, int nMaxCount);
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern int GetWindowTextLength(IntPtr hWnd);
}
public class Hello{
public static void Main(){
int result;
string _windowText;
const int MaxLength = 500;
IntPtr handle = Win32Api.GetForegroundWindow();
StringBuilder tsb = new StringBuilder(MaxLength);
result = Win32Api.GetWindowText(handle, tsb, tsb.Capacity);
if ( result > 0 ) {
_windowText = tsb.ToString();
}
else {
_windowText = "";
}
//foreground window title
Console.WriteLine(tsb.ToString());
}
}
ファイル構成
呼び出しにproxy_ex.dllを使用しています。
下記の方からお借りしました。
Release SAORI : proxy_ex v1.0.2 · ponapalt/csaori · GitHub
ghost名/ghost/master
├─yaya.dll
├─dll
│ ├─proxy_ex.dll
│ └─getWindowTitle.exe
└─profile
伺かに組み込む
proxyをsjisで使用します。
//1分に一度呼ばれる
OnMinuteChange {
_window_title = FUNCTIONEX( "./dll/proxy_ex.dll" , "./getWindowTitle.exe" )
"何見てるの? %(_window_title) ? ふ~ん。\e"
}
//既存の関数に追加
OnGhostLoad {
//proxy_ex.dll初期化
FUNCTIONEX("./dll/proxy_ex.dll" , "/charset" , "sjis" )
}
最後に。
Ghostからユーザーに対して取れるアクションが乏しいような気がしました。
素敵なゴーストが生まれることを願っています。