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


HSPTV!掲示板


未解決 解決 停止 削除要請

2019
1213
こいる「aplobj "EDIT"」で、文字列を正常に送れるまで待つ処理をしたい6解決


こいる

リンク

2019/12/13(Fri) 17:40:25|NO.89047

「aplobj "EDIT"」で、文字列を正常に送れるまで待つ処理をしたいのですが、
どうしてもできません。どうすればできますか?

「正常に送れる」というのは、アプリ起動途中ではなく、
ちゃんとアプリが起動されていて、入力を受け付ける状態のことをさしています。



この記事に返信する


さか

リンク

2019/12/13(Fri) 22:39:39|NO.89051

マニュアルにあるようにaplselで目的のオブジェクトIDを補足して
からaplobjを実行しているのに上手くいかないということですか?

上手くいかないソースを載せるといいと思いますよ。



こいる

リンク

2020/1/11(Sat) 00:12:03|NO.89224

すみません。このスレッドの存在を忘れていました。

例えば、アプリを起動するとき、
メモ帳など軽いソフトなら大丈夫ですが、
pcスペックが低かったりすると、開くのに時間がかかるアプリがあります。

そういうアプリに、しっかり起動した後に文字列を送信したいです。


1ヵ月近くもほったらかしで、すみませんでした。



あらや

リンク

2020/1/21(Tue) 02:10:28|NO.89303

全てのアプリで使える訳ではありませんが、こんな感じでしょうか。


#include "hspext.as" #define NULL 0 #define FALSE 0 #define PROCESS_ALL_ACCESS 0x001F0FFF #define INFINITE 0xFFFFFFFF #uselib "user32.dll" #cfunc FindWindow "FindWindowA" sptr, sptr #func GetWindowThreadProcessId "GetWindowThreadProcessId" sptr, sptr #cfunc WaitForInputIdle "WaitForInputIdle" sptr, sptr #uselib "kernel32.dll" #cfunc OpenProcess "OpenProcess" sptr, sptr, sptr #func CloseHandle "CloseHandle" sptr sdim caption, 256; // 起動待機 title "起動待機中"; repeat aplsel "ウィンドウタイトル"; // ここは任意の文字列にしてください。(メモ帳なら 無題 - ) if(stat == 0) { break; } wait 100; loop caption = refstr; // ウィンドウの正確なタイトル取得 WhWnd = FindWindow(NULL, caption); // タイトルからウィンドウハンドル取得 GetWindowThreadProcessId WhWnd, varptr(ProcessId); // ウィンドウハンドルからプロセスID取得 PhWnd = OpenProcess( PROCESS_ALL_ACCESS, FALSE, ProcessId); // プロセスIDからプロセスハンドル取得 // 入力可能になるまで待機 title "入力待機中"; repeat rc = WaitForInputIdle(PhWnd, INFINITE); // プロセスの状態取得 if( rc == 0 ) { CloseHandle PhWnd; // プロセスハンドルが不要になったら閉じる break; } wait 100; loop aplobj "EDIT"; aplstr "送信完了"; title "入力完了";

メモ帳やサクラエディタでは使えましたが、
LibreOfficeで試したら見事に入力すらされずフリーズしてくれました;;



こいる

リンク

2020/1/21(Tue) 16:18:30|NO.89304

返信ありがとうございます。

「WaitForInputIdle」で、ユーザーの入力を待っている状態まで待機することができるのですか。
http://tokovalue.jp/function/WaitForInputIdle.htm

勉強になりました。


ところでなんですが、こういうAPIなどはどうやって見つけているのでしょうか?
検索しようにも、なんて検索すればいいのか分からないです。



あらや

リンク

2020/1/21(Tue) 19:32:04|NO.89310

>ところでなんですが、こういうAPIなどはどうやって見つけているのでしょうか?
>検索しようにも、なんて検索すればいいのか分からないです。

プログラムの解説なんかでよく使いそうな言葉で検索するとしか言えません……

今回の場合を例にさせていただくと、
こいるさんの言葉では『アプリ』『起動』『待つ』

実際にサンプルがあるかどうかは別にして、
この言葉を言い換えると

『アプリ』===>『外部アプリ(または外部プログラム、外部ソフト)』
『起動』===>ここはそのまま(または内容的に『入力』)
『待つ』===>『待機』

つまり『外部アプリ 起動 待機』という3つのキーワードで検索して見つけたものです。

見つけたのはC#やVBのソースでしたが運よくAPIだったので、利用させてもらいました。



こいる

リンク

2020/1/21(Tue) 20:11:21|NO.89311

なるほど。参考にします。

いろいろとありがとうございました。



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