■ 質問はここへ ■

1821 にジャンプ
No. 1821投稿者: 北斗七星日付: 2018/02/26 21:59:38
題名 : Re^2マクロについて

 回答ありがとうございます。
 sendkeys.exe を試してみましたが、設定が不備なのか
上手くいきませんでした。

 マクロの質問は、他でするとは気づきませんでした。
失礼致しました。

 ありがとうございます。

No. 1822 (1821へのコメント)投稿者: わせい HP日付: 2018/02/27 17:53:20
題名 : Re: Re^2マクロについて

確かに動きませんね。
C:\QX\qxw32.exe
qxw32.exe
QX32
/active
/all
どれも動かない。
ドキュメントウィンドウへの入力もあやしい動作になる。

QGREP32 には問題なくキーが送れて、便利に使っているのですが。
ほかのアプリを探してみようかな。

来週、ここに結果を書きこみます。

No. 1823 (1822へのコメント)投稿者: 北斗七星日付: 2018/03/06 19:35:02
題名 : Re^2: Re^2マクロについて

 わせいさんへ。
 ご多忙の中、お手数をかけてすみません。

 QXメーリングリスト は、自分にはハードルが高そうで、
躊躇しています。

 ネットで調べたものを参考に、
(あまり詳しくはない) vbs でキーを送るプログラムを
Qx側で shell によって呼び出す方法も試しましたが、ダメでした。
組んだプログラム(というほどのものではないです)が悪いのか、
それ以外の理由かもわかりませんが……。

 API も調べましたが、ハードルが高すぎて即断念しました。

 自動化できると、複数ある見出しの所定位置へ
簡単に移動でき、文章入力により頻繁に位置がずれても、
マクロを1回起動すれば済むため、助かります。

 何か良い方法が見つかると、嬉しいです。

No. 1824 (1822へのコメント)投稿者: 北斗七星日付: 2018/03/08 20:30:54
題名 : Re^2: Re^2マクロについて、判明しました

 わせいさんへ
  解決法が見つかりました。
  以下のようにすれば、
 ダイアログ(リストのみ)自体を表示しなくて済むようです。
	
	@@ListUserString$=setWord$
	@@ListAutoclose=TRUE
	@ListUser

 なちゃさん作成の NK_OLine.mac 内を調べていて
判明しました。
 
 ただ、ダイアログやウインドウに、キーを送信する方法が
マクロ内で実行できると、他の場合でも自動化が図れるため、
お手数で無ければ、教えていただければ幸いです。

 ご協力いただいた「わせいさん」と、
素晴らしいマクロを作っていただいた「なちゃ」さんと、
細かいところまで考えられているQx を作っていただいた arakenさん
に感謝申し上げます。

No. 1825 (1824へのコメント)投稿者: わせい HP日付: 2018/03/09 08:52:55
題名 : Re^3: Re^2マクロについて、判明しました

@@ListAutoClose=TRUE
これは知りませんでした。便利ですね。さっそく使います。
ありがとうございました。

VBSのsendkeysを試してみました。QGREPにはキーを送れますが、QXには送れ
ません。QXは構造が複雑だからか。
PowerShellならできるかもしれないので、メーリングリストで質問してみます。

No. 1826 (1824へのコメント)投稿者: わせい HP日付: 2018/03/10 12:39:51
題名 : Re^3: Re^2マクロについて、判明しました

訂正。
VBSでQXのダイアログにキーを送れました。

C:\QX\MACRO\@_SK_test.MAC
'━━━━━━━━━━━━━━━━━━━━

proc test
dim ret
dim setWord$
ret = shell("Wscript.exe C:\command\WSH\ユーザ定義enter.VBS")
if ret = 0 then
call msgbox("起動できません")
exit proc
end if
@@ToolListType = 4
setWord$="◆,●,■"
@@ListUserString$=setWord$
' @@ListAutoClose=TRUE
@ListUser
end proc

'━━━━━━━━━━━━━━━━━━━━
'━━━━━━━━━━━━━━━━━━━━


C:\command\WSH\ユーザ定義enter.VBS
'━━━━━━━━━━━━━━━━━━━━

Option Explicit

Dim objWshShell
set objWshShell = WScript.CreateObject("WScript.Shell")
WScript.Sleep 3000
'objWshShell.AppActivate "QX32 : ユーザ定義文字列"
objWshShell.AppActivate "ユーザ定義文字列"
'objWshShell.SendKeys "{ENTER}"
objWshShell.SendKeys "{ESC}"
Set objWshShell = Nothing

'━━━━━━━━━━━━━━━━━━━━
ユーザ定義文字列を表示してからVBSファイルを起動するのではなく、
先にVBSファイルを起動し、WScript.Sleepで長めに待たせておいてから
@ListUserするとダイアログが閉じます。"{ENTER}"でも"{ESC}"でも。
"QX32 : ユーザ定義文字列"でも"ユーザ定義文字列"でも動きます。

でも、VBSのsendkeysは全角文字が送れません。
やはり、メーリングリストで質問します。
いま質問内容を考えているところ。

No. 1827 (1826へのコメント)投稿者: 北斗七星日付: 2018/03/11 19:46:57
題名 : Re^4: Re^2マクロについて、判明しました

 回答ありがとうございます。

 ■早速試してみました。上手く行きました。

 Shell の呼び出しは、
@ListUser の前とは、まったく気づきませんでした。

自分では絶対に考えつかなかったと思います。
だだただ、感心するしかありません。

 VBSの
WScript.Sleep 3000 は、500 に設定しました。

 WScript.Sleep は使用しなくても、動作するみたいですね。
今回のマクロにおいては、対象文書に該当する文字列が無い場合、
常駐リストの書き換えがされないことを理解していれば、
無い方が動作は速いため、自分としては、いいかなと思っています。

 ■当初、焦ったことがあります。
マクロを実行したときに、「1行目に対しての、コンパイルエラー」が出ました。

偶然手元にあった、VBS ファイルを見て、
Option Explicit の後に、
On Error Resume Next を追加して、実行したところ、エラーが出なくなり
次に、マクロを実行したところ、正常動作しました。

 ただ、現在は、On Error〜 を除いても、正常に動作しています。
今は上手くいっているため、どうということはないのですが、
何か初期的な問題なのか……不明です。

 ■Qx にも call _sleep(1000) コマンドがあったため、
sendkey と共に @ListUser の前に適用しましたが、ダメみたいです。

 ■あと、自分のメールのフォントが、わせいさんのメールのフォントと
違ってしまったのは何故なのかな? と、素朴な疑問。
メール文をコピペしたからかな!?

 ■罫線つきのため、回答がとても分かり易かったです。
ありがとうございます。

また、わせいさんのブログも、いつも参考にしており、助かっています。


ヘッダのみ表示
順番に表示(No. 1821 から)


メールアドレスを表示するにはURLの後ろに &m=b2258a7e をつけてください。
ユーザー フォーラム一覧

http://www2k.biglobe.ne.jp/~araken/
http://0ban.com/araken/