HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2014
1207
コール他のプロセスの真ん中に文字を出す3未解決


コール

リンク

2014/12/7(Sun) 09:15:41|NO.66329

他のプロセスの真ん中に文字を出したいのですが
どうすればよいでしょうか?

例えば適当に1.exeを作り、もうひとつの2.exeで
1.exeのウィンドウの真ん中に 特定した文字を
入れ込む。ってことは可能でしょうか?



この記事に返信する


cats

リンク

2014/12/7(Sun) 13:10:03|NO.66333

1.exeをあなたが作るのであればプロセス間通信などで命令を送るのが楽でしょう。
そうでないなら、GetDCだったかで1.exeのデバイスコンテキストを取得して
DrawTextで文字列を描画してやればいいです。
再描画などの処理が必要あだったかもしれませんが、基本はそれで可能かと。



可憐

リンク

2014/12/8(Mon) 15:34:38|NO.66341

即席で書いたので汚いソースですが
このような感じでできるかと思われます。
指定のプロセスの横方向の位置及び縦方向の位置が0だった時の場合です。


【1.exe側】(仮プロセス)

title "1.exe"



【2.exe側】(1.exeの真ん中に文字を入れ込む)

#include "gdi32.as" #include "user32.as" screen dim rect, 4 FindWindow NULL, "1.exe" ;今は1.exeにしているけど実際は描画するプロセスのタイトルを指定 windowwnd = stat MoveWindow windowwnd,0,0,640,480,-1 if windowwnd == NULL : dialog "1.exeが起動されておりません" GetWindowRect windowwnd, varptr(rect) x = rect(2) - rect(0) ;1.exeの右下端の座標 y = rect(3) - rect(1) ;1.exeの左下端の座標 screen 0,,,,x/2,y/2 bgscr 0 color 255 : boxf font "MS ゴシック", 10 : buf = "文字" //パスを開いて文字列を書く BeginPath hdc TextOutA hdc, 0, 0, varptr(buf), strlen(buf) EndPath hdc //パスからリージョン作成 PathToRegion hdc hRgn = stat //ウィンドウにリージョンをセットする SetWindowRgn hwnd, hRgn, 1 wait 500 end



cats

リンク

2014/12/8(Mon) 15:50:57|NO.66343

スレ主さんは消えましたが一応。

#uselib "user32.dll" #cfunc FindWindow "FindWindowA" sptr, sptr #cfunc GetDC "GetDC" int #func DrawText "DrawTextA" int, int, int, int, int dim rect, 4 handle = 0 : DevsCntx = 0 text = "Hello!" // ハンドル補足(ここはご自由に) handle = FindWindow( 0, "Application Title Goes Here." ) if handle == 0 : stop // デバイスコンテキストハンドル取得 DevsCntx = GetDC( handle ) rect = 32, 32, 100, 64 // 文字列描画 DrawText DevsCntx, varptr(text), strlen(text), varptr(rect), 0 stop



ONION software Copyright 1997-2023(c) All rights reserved.