UWSC 掲 示 板
投稿時に「証明書が不正です」と出る場合には、JavaScriptをオンにしてください
動作不具合での質問の場合には環境(OS,IEのバージョン等)の表記もしてください
タイトルは質問内容を表したものにしてください
ネットゲーム関係の質問はご遠慮ください

msgboxのokボタンにキャレットを持っていく方法 / よっさん
下記のコードを起動するとokボタンがアクティブの状態でmsgboxが表示されます。
マウスカーソルを「ok」ボタンの上にもっていきたいのですが良い方法はないでしょうか?
---------------------
msgbox("msg")
---------------------

[試したコード]
msgbox("msg")

id=GETID(,"TUmsgDlg_uwsc")
mouse=TRUE
getstr(id,mouse)

No.5588 2018/07/30(Mon) 11:31:27

Re: msgboxのokボタンにキャレットを持っていく方法 / Liners
Thread OK_Button()  // ダイアログはメインが止まるので

msgbox("msg")


Procedure OK_Button()
  wid = GETID(,"TUmsgDlg_uwsc", -1)
  CLKITEM(wid, "OK", CLK_BTN or CLK_MUSMOVE, False) // クリックはしない
Fend

No.5590 2018/07/30(Mon) 13:29:49

Re: msgboxのokボタンにキャレットを持っていく方法 / よっさん
Liners、期待通りの処理ができました。
ありがとうございます。

No.5594 2018/07/31(Tue) 13:43:32

Re: msgboxのokボタンにキャレットを持っていく方法 / よっさん
Liners→Liners様に上記投稿訂正します。
No.5595 2018/07/31(Tue) 13:44:37
UWSC起動時に、勝手にタスクトレイに入ってしまう / 工事中
こんにちは、何種類かUWSCを試したのですが、
最近になりまして当方のwin7とwin10とで、
起動時に勝手にタスクトレイに入り込んでしまうようになりました

例えば、以下のような組み合わせでトレイに入ってしまいます。
win10home 32bit版、uwsc Pro Ver 5.2.3.0

なんとなく、どれかのウインドウズアップデートモジュールを入れてから
このようになってしまったようにも思えます。

 これを以前のようにアイコンダブルクリックなどで起動すると
デスクトップ上に窓が作られるようにできないでしょうか?

よろしくお願いします。

No.5584 2018/07/30(Mon) 00:42:32

Re: UWSC起動時に、勝手にタスクトレイに入ってしまう / satocha
いったんUWSCを終了した後、コマンドプロンプトを開き、
notepad %APPDATA%\UWSC\UWSC.INI
と入力してください。
メモ帳が出てきますので、[SET]の項目にある
「TaskTrayStart=1」を「TaskTrayStart=0」に変更し、UWSCを再起動してください。

No.5586 2018/07/30(Mon) 08:45:16

Re: UWSC起動時に、勝手にタスクトレイに入ってしまう / 工事中
ありがとうございました。自分のappdataのフォルダ下までたどり着き、
設定ファイルを変更して、無事に起動時に窓が開くようになりました。

いままでは起動時に窓が開けていたのは、
いままで使っていたOS内で、自分で以前、上記のような変更をしておいたから
だったのだと思われます。
(uwsc本体のフォルダは、複数verを外部HDDからC:\などにコピペして使用)

No.5587 2018/07/30(Mon) 09:53:27
IEウィンドウ内でaltキーを押すと、メニューが表示・非表示と切り替えができるんですが、これをaltキーを押しても非表示のままに切り替えができないようにする方法はないでしょうか?IEウィンドウでgetkeystate(VK_alt)で指定した処理をさせているのですが、メニューの表示・非表示が毎回切り替わり 面倒なのでこれをaltキーを押したら指定した処理だけをするようにしたいです。 なにか良い方法ないでしょうか? / ハロハロ
IEウィンドウ内でaltキーを押すと、メニューが表示・非表示と切り替えされてしまうのですが、これをaltキーを押しても非表示のままに切り替えができないようにする方法はないでしょうか?

IEウィンドウでgetkeystate(VK_alt)で指定した処理をさせているのですが、メニューの表示・非表示が毎回切り替わり面倒なのでこれをaltキーを押したら指定した処理だけをするようにしたいです。
なにか良い方法ないでしょうか?

No.5552 2018/07/20(Fri) 15:04:36

Re: IEウィンドウ内でaltキーを押すと、メニューが表示・非表示と切り替えができるんですが、これをaltキーを押しても非表示のままに切り替えができないようにする方法はないでしょうか?IEウィンドウでgetkeystate(VK_alt)で指定した処理をさせているのですが、メニューの表示・非表示が毎回切り替わり 面倒なのでこれをaltキーを押したら指定した処理だけをするようにしたいです。 なにか良い方法ないでしょうか? / ハロハロ
すみません間違って2重投稿になってしまいました。
No.5554 2018/07/20(Fri) 15:08:00

Re: IEウィンドウ内でaltキーを押すと、メニューが表示・非表示と切り替えができるんですが、これをaltキーを押しても非表示のままに切り替えができないようにする方法はないでしょうか?IEウィンドウでgetkeystate(VK_alt)で指定した処理をさせているのですが、メニューの表示・非表示が毎回切り替わり 面倒なのでこれをaltキーを押したら指定した処理だけをするようにしたいです。 なにか良い方法ないでしょうか? / stuncloud
一番簡単なのは別のキーを使うことですね (VK_PAUSEはほぼ競合しないのでオススメ)

getkeystate()でなくsethotkey()を使えばUWSC以外にキー操作が取られなくなるのでどうしてもという場合はそっちで
逆に言うとUWSC以外で指定キーが反応しなくなるので場合によってはひどく不便になります
(アクティブウィンドウに対して該当キーをsckey()で送る処理を書くと回避できるけどパフォーマンスに難あり)

No.5556 2018/07/20(Fri) 18:13:36

タイトル省略 / トンボ
MicrosoftによってメニューとALTキーの関連性は定められたため、UWSC側で切り替わり防止は難しいでしょう。また、ALTキーの本来の役割を考えると、別のキーにすることを推奨します。
どうしてもというならALTキー手動押下後に、SCKEY関数などでもう一度ALTキー押下させるとよいですね。

No.5558 2018/07/20(Fri) 18:42:55

Re: IEウィンドウ内でaltキーを押すと、メニューが表示・非表示と切り替えができるんですが、これをaltキーを押しても非表示のままに切り替えができないようにする方法はないでしょうか?IEウィンドウでgetkeystate(VK_alt)で指定した処理をさせているのですが、メニューの表示・非表示が毎回切り替わり 面倒なのでこれをaltキーを押したら指定した処理だけをするようにしたいです。 なにか良い方法ないでしょうか? / ハロハロ
stuncloud様、回答ありがとうございます。

一番簡単なのは別のキーを使うことですね (VK_PAUSEはほぼ競合しないのでオススメ)
>ノートパソコン使っていますのでPAUSEがないです。

getkeystate()でなくsethotkey()を使えばUWSC以外にキー操作が取られなくなるのでどうしてもという場合はそっちで
>sethotkeyだとIEの既設定のALTキーでメニュー表示の切替が無効にできるということでしょうか?

下記のコードで試してみましたが、altキーを押すとメニューが一瞬表示されて消えるような症状がでます。
これが仕様なのでしょうか?


while TRUE
SETHOTKEY( ,MOD_ALT, "fucx")  // CTRLキー の登録
sleep(0.1)
wend

Procedure fucx()
BTN(LEFT,CLICK,640,269,63)
Fend

No.5563 2018/07/22(Sun) 13:44:00

Re: IEウィンドウ内でaltキーを押すと、メニューが表示・非表示と切り替えができるんですが、これをaltキーを押しても非表示のままに切り替えができないようにする方法はないでしょうか?IEウィンドウでgetkeystate(VK_alt)で指定した処理をさせているのですが、メニューの表示・非表示が毎回切り替わり 面倒なのでこれをaltキーを押したら指定した処理だけをするようにしたいです。 なにか良い方法ないでしょうか? / ハロハロ
トンボ様、回答ありがとうございます。

>どうしてもというならALTキー手動押下後に、SCKEY関数などでもう一度ALTキー押下させるとよいですね。

この発想はなかったです、やってみますありがとうございます。

No.5564 2018/07/22(Sun) 13:45:13

Re: IEウィンドウ内でaltキーを押すと、メニューが表示・非表示と切り替えができるんですが、これをaltキーを押しても非表示のままに切り替えができないようにする方法はないでしょうか?IEウィンドウでgetkeystate(VK_alt)で指定した処理をさせているのですが、メニューの表示・非表示が毎回切り替わり 面倒なのでこれをaltキーを押したら指定した処理だけをするようにしたいです。 なにか良い方法ないでしょうか? / stuncloud
>下記のコードで試してみましたが、altキーを押すとメニューが一瞬表示されて消えるような症状がでます。
>これが仕様なのでしょうか?

sethotkeyは何度も呼ぶ必要はありません、一度呼ぶだけでキーが押される度に指定した関数が実行されます
あとAltやShift、Ctrlは VK_* と MOD_* を一緒に指定しないとうまくいかないです

sethotkey(VK_ALT, MOD_ALT, "OnAltKey")

sleep(60)

procedure OnAltKey()
 print "Altが押されました"
fend


この状態ですとAltキーがどのウィンドウにも反応しなくなるので、場合によっては関数内で
sckey(getid(GET_ACTIVE_WIN), VK_ALT)
のようにしてAltキーをアクティブウィンドウに渡します
今回の場合であれば例えばIE以外のウィンドウに対してはこの方法でAltキーを送るようにするとか

No.5570 2018/07/24(Tue) 12:17:18

Re: IEウィンドウ内でaltキーを押すと、メニューが表示・非表示と切り替えができるんですが、これをaltキーを押しても非表示のままに切り替えができないようにする方法はないでしょうか?IEウィンドウでgetkeystate(VK_alt)で指定した処理をさせているのですが、メニューの表示・非表示が毎回切り替わり 面倒なのでこれをaltキーを押したら指定した処理だけをするようにしたいです。 なにか良い方法ないでしょうか? / ハロハロ
stuncloud様、返信ありがとうございます。
SETHOTKEYをwhileの外にだして使うということですね、こちらでも検証できました。

>AltやShift、Ctrlは VK_* と MOD_* を一緒に指定しないとうまくいかないです
これがこちらで検証しても同じ結果になります。下記です。どちらも同じ処理になります。

---------------------
1のスクリプト

SETHOTKEY( ,MOD_ALT, "OnAltKey")
while TRUE
sleep(0.1)
wend

procedure OnAltKey()
 print "Altが押されました"
fend
---------------------
2のスクリプト

sethotkey(VK_ALT, MOD_ALT, "OnAltKey")

while TRUE
sleep(0.1)
wend

procedure OnAltKey()
 print "Altが押されました"
fend
---------------------

>この状態ですとAltキーがどのウィンドウにも反応しなくなる
2のスクリプトを起動してIEウィンドウでaltキー押すとメニューが表示されて
さらにaltキー押すとメニュー表示が非表示になります。
IEウインドウに反応してしまいます。やはり、IE上でaltキー押した場合メニュー表示を切替をさせずに関数内の処理をさせるのは無理なんでしょうかね。

No.5571 2018/07/24(Tue) 22:32:00

Re: IEウィンドウ内でaltキーを押すと、メニューが表示・非表示と切り替えができるんですが、これをaltキーを押しても非表示のままに切り替えができないようにする方法はないでしょうか?IEウィンドウでgetkeystate(VK_alt)で指定した処理をさせているのですが、メニューの表示・非表示が毎回切り替わり 面倒なのでこれをaltキーを押したら指定した処理だけをするようにしたいです。 なにか良い方法ないでしょうか? / stuncloud
こちらではAltキーを押してもIEが反応することはないです
再現できないと解決方法を調べることもできないので、これ以上の助言は難しそうです
メニューがチラチラしちゃいますけど、トンボさん案でやってもらうのがいいかな…

と思ってたんですけど、別の解決方法を見つけました
https://docs.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/platform-apis/aa752059%28v%3dvs.85%29

ie = getactiveoleobj("InternetExplorer.Application")
ie.MenuBar = FALSE

とすることでこちらの環境ではそもそもメニューバーを表示することすらできなくなりました
(IEのタイトルバーの左端をクリックして表示されるコンテキストメニュー上でメニューバーの表示切り替えがグレーアウトする)
なのでAltキーを押しても何も起きなくなります

これだけで解決しなかった場合でも、メニューバー表示・非表示に反応するOnMenuBarイベントでメニューバーが表示された瞬間消すというような動きをさせることもできるはずです
https://docs.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/platform-apis/aa768290%28v%3dvs.85%29

// 関数内でも呼ぶのでieはpublicにしといてください
oleevent(ie, "DWebBrowserEvents2", "OnMenuBar", "OnMenuBar")

// 試しにメニューバーを表示させてみると即座に非表示になります
ie.MenuBar = TRUE

procedure OnMenuBar()
 // メニューバーの状態が変更されたときに実行される
 if EVENT_PRM[0] then // EVENT_PRM[0]にはメニューバーの状態が入っている (bool値)
  ie.MenuBar = FALSE
 endif
fend

No.5572 2018/07/25(Wed) 11:13:06

Re: IEウィンドウ内でaltキーを押すと、メニューが表示・非表示と切り替えができるんですが、これをaltキーを押しても非表示のままに切り替えができないようにする方法はないでしょうか?IEウィンドウでgetkeystate(VK_alt)で指定した処理をさせているのですが、メニューの表示・非表示が毎回切り替わり 面倒なのでこれをaltキーを押したら指定した処理だけをするようにしたいです。 なにか良い方法ないでしょうか? / Tmshinza
IE11で「表示」メニュー→「ツールバー」→「メニューバー」のチェックを外して、メニューが自動的に隠れるようにした時の話だと思いますが、「メニューバー」のチェックを付けておく(altキーの操作にかかわらず、常にメニューは表示状態)では駄目なのかな。
No.5573 2018/07/27(Fri) 13:43:20

Re: IEウィンドウ内でaltキーを押すと、メニューが表示・非表示と切り替えができるんですが、これをaltキーを押しても非表示のままに切り替えができないようにする方法はないでしょうか?IEウィンドウでgetkeystate(VK_alt)で指定した処理をさせているのですが、メニューの表示・非表示が毎回切り替わり 面倒なのでこれをaltキーを押したら指定した処理だけをするようにしたいです。 なにか良い方法ないでしょうか? / ハロハロ
stuncloud様、ありがとうございます。
e.MenuBar = FALSEがあるとは知らなかったです。

No.5582 2018/07/29(Sun) 12:46:11

Re: IEウィンドウ内でaltキーを押すと、メニューが表示・非表示と切り替えができるんですが、これをaltキーを押しても非表示のままに切り替えができないようにする方法はないでしょうか?IEウィンドウでgetkeystate(VK_alt)で指定した処理をさせているのですが、メニューの表示・非表示が毎回切り替わり 面倒なのでこれをaltキーを押したら指定した処理だけをするようにしたいです。 なにか良い方法ないでしょうか? / ハロハロ
Tmshinza様、回答有難うございます。
そのような設定できるんですね。
また、一つ勉強になりました。

No.5583 2018/07/29(Sun) 12:47:34
uwscをダウンロードしたいです / OPPA
uwsc公式サイトとダウンロード用のサイトがなくなっています。
僕にuwscをダウンロードさせてください

No.5561 2018/07/21(Sat) 00:27:27

Re: uwscをダウンロードしたいです / UWSC
ここから
https://www.vector.co.jp/soft/winnt/util/se115105.html

No.5581 2018/07/29(Sun) 09:41:29
ログインボタンをクリックしたいです / ぼけちん

先輩の皆様、いつも教えて頂いて、勉強をさせていただいて有り難うございます。
IEで、Tutanota というサイトにログインしたいと思って、頑張って下記スクリプトを作ってみましたが、なぜかログインボタンがグレーアウトされてままでクリックできません。
ハンド入力で、アドレスとパスワードを入力しますと、ログインボタンがクリックできます。
UWSCで、ログインできる方法がありまりたらご教示頂けばと思います。

IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.visible = True
IE.navigate( "https://app.tutanota.com/#login")
Repeat
Sleep(0.2)
UNTIL !IE.busy AND IE.readyState = 4
IE.document.getElementById("loginMailAddress").value = "test1234@tutamail.com"
IE.document.getElementById("loginPassphrase").value = "Test123&Mail123"
IE.document.getElementById("submitLogin").click()

宜しくお願い致します。

No.5574 2018/07/27(Fri) 16:41:06

Re: ログインボタンをクリックしたいです / stuncloud
>ハンド入力で、アドレスとパスワードを入力しますと、ログインボタンがクリックできます。
まさにこれがポイントなんですね
この手のユーザー入力があったかどうかでログインボタンを有効にしているタイプですと、valueを設定しただけではダメです
回避方法はいろいろあるんですが、今回は入力欄をフォーカスしてから入力値をペーストする方法を試してみました

IE.document.getElementById("loginMailAddress").focus()
sendstr(0, "test1234@tutamail.com")
sckey(hndtoid(IE.hwnd), VK_CTRL, VK_V)
IE.document.getElementById("loginPassphrase").focus()
sendstr(0, "Test123&Mail123")
sckey(hndtoid(IE.hwnd), VK_CTRL, VK_V)

これでログインボタンが押せるようになります

クリップボードを経由するのは困る!という場合は別の方法でやる必要があります
が、要するに手入力っぽいことをしてやればいいので入力欄でsckey()やkbd()をうまく使ってください
僕がよくやるのはvalueに値を入れた後フォーカスして sckey(hndtoid(IE.hwnd), VK_SPACE, VK_BACK) ですね

No.5575 2018/07/27(Fri) 17:26:28

Re: ログインボタンをクリックしたいです / ぼけちん
stuncloud様

素晴らしいです、さすがstuncloud様、有り難うございます。
前回に引き続きどうも有り難うございます。
悩んで・・・、悩んで・・・、悩んでいたのですが、お陰様でログインできるようになりました。

最終目的は、メール送信することなのですが、その部分は自分で悩むとします。

メール送信&メール確認後に「Logout」ボタンをクリックする方法を教えて頂けないでしょうか?
ご教示頂きましたうえに、更なるお願いで誠に申し訳ございませんが、宜しくお願い致します。

No.5576 2018/07/27(Fri) 22:57:20

Re: ログインボタンをクリックしたいです / satocha
>「Logout」ボタンをクリックする方法
これを知るにはそのサイトに会員登録しなければなりません。さすがに甘え過ぎでは? ご自分で調べてはいかがでしょうか。

会員ではないので想像するだけですが、ログアウトは、ログインと違いボタンを押すだけだと思うのでより簡単なはずです。

その際、ブラウザの開発者モードでサイトを調べると動的に生成されたDomも見ることができるので活用してみてください。開発者モードはほとんどのブラウザでF12キーで開きます。

No.5577 2018/07/28(Sat) 06:46:35
配列変数サイズが10あるのをpopupmenuで2つ左右に表示させる方法 / メルミ


左に配列要素1〜5をpopupmenu表示して、右に配列要素6〜10をpopupmenuで表示させる方法ないでしょうか?
下記だと、1〜5のpopupmenuが表示されて選択したら、次に右に配列要素6〜10のpopupmenuが表示されます。
同時に左右に表示する方法ないでしょうか?
下記だためしたコードです。


fp="C:\Users\user\"

thread aa(fp)

aa1(fp)


function aa(fp)
fp="C:\Users\user\"
a=getdir(fp)
b=length(GETDIR_FILES)/2
b=int(b)

c=slice(GETDIR_FILES,b,a)
iti=popupmenu(c)
result = iti
fend


function aa1(fp)
fp="C:\Users\user\"
a=getdir(fp)
b=length(GETDIR_FILES)/2
b=int(b)

c=slice(GETDIR_FILES,0, b)
iti=popupmenu(c)
result = iti
fend

No.5559 2018/07/20(Fri) 19:20:36

Re: 配列変数サイズが10あるのをpopupmenuで2つ左右に表示させる方法 / siguma
少し手間なような気もしますが、下の3つのスクリプトを用意してmenu.uwsを実行するとメルミさんの希望する動作が一応実現できます。(フォルダやファイル名は適宜読み替えて下さい)
個人的には同時表示にこだわらずサブメニューを使う方がスマートな気もしますが…

[menu.uws]
fp = "C:\Users\user\"

Thread menu_left(fp)
Exec("C:\Program Files\uwsc5302\UWSC.exe <#DBL>C:\Macro\menu_right.uws(" + fp + ")<#DBL>", True)

Procedure menu_left(fp)
  Exec("C:\Program Files\uwsc5302\UWSC.exe <#DBL>C:\Macro\menu_left.uws(" + fp + ")<#DBL>")
Fend

[menu_left.uws]
a = GetDir(PARAM_STR[0])
b = Length(GETDIR_FILES) / 2
b = Int(b)

c = Slice(GETDIR_FILES, 0, b)

kekka = PopupMenu(c, 500, 300)
ifb kekka <> -1 then
  MsgBox(c[kekka] + "がクリックされました")
endif

[menu_right.uws]
a = GetDir(PARAM_STR[0])
b = Length(GETDIR_FILES) / 2
b = Ceil(b)

c = Slice(GETDIR_FILES, b, a)

kekka = PopupMenu(c, 700, 300)
ifb kekka <> -1 then
  MsgBox(c[kekka] + "がクリックされました")
endif

No.5565 2018/07/22(Sun) 15:25:57

Re: 配列変数サイズが10あるのをpopupmenuで2つ左右に表示させる方法 / siguma
失礼。間違った方を載せてしまったので訂正します。

[menu.uws]4行目
(×)Exec("C:\Program Files\uwsc5302\UWSC.exe <#DBL>C:\Macro\menu_right.uws(" + fp + ")<#DBL>", True)
(○)Exec("C:\Program Files\uwsc5302\UWSC.exe <#DBL>C:\UWSC Macro\menu_right.uws<#DBL> <#DBL>" + fp + "<#DBL>", True)
[menu.uws]7行目
(×)Exec("C:\Program Files\uwsc5302\UWSC.exe <#DBL>C:\Macro\menu_left.uws(" + fp + ")<#DBL>")
(○)Exec("C:\Program Files\uwsc5302\UWSC.exe <#DBL>C:\UWSC Macro\menu_left.uws<#DBL> <#DBL>" + fp + "<#DBL>"")

No.5566 2018/07/22(Sun) 15:37:11

Re: 配列変数サイズが10あるのをpopupmenuで2つ左右に表示させる方法 / メルミ
siguma様、回答ありがとうございます。
希望通りの完璧なソースです。イメージ通りの操作できそうです。
ありがとうございます。

No.5567 2018/07/22(Sun) 18:27:07

Re: 配列変数サイズが10あるのをpopupmenuで2つ左右に表示させる方法 / メルミ
popupmenuを左右に表示させる事はsiguma様のおかげでできるようになりました。
ここで一つ問題がでてきました。左右のどちらかのpopupmenuの項目を選択しても、もう片方がずっと表示されたままになってしまいます。
片方のpopupmenuの項目が選択されたら、もう片方のpopupmenuの項目が消えるようにしたいのですが、なにか良い方法ないでしょうか?
やり方がまったく思いつきません。

No.5568 2018/07/22(Sun) 19:05:20

Re: 配列変数サイズが10あるのをpopupmenuで2つ左右に表示させる方法 / siguma
要はleftもrightもmenu.uwsに紐付いて起動しているのでmenu.uwsをさっさと閉じる処理に書き換えれば「もう片方のpopupmenuの項目が消える」ようになります。
例)MsgBoxで結果をいちいち表示させるのではなく適当なファイルに書き込んでさっさとexitさせて、その次の処理は別スクリプトでそのファイルを読み込ませて行う

まあそもそもがお世辞にもスマートなやり方とは言えないものなので、あまり欲張らずある程度のところで妥協してもらうか或いは別のマシな方法を模索してもらうとか(笑)

No.5569 2018/07/22(Sun) 20:28:09
外部プログラムからのマクロの起動 / 中川 智
タイトルの通りですが、UWSCで作ったマクロを外部から起動することができますでしょうか?

よろしくお願いいたします。

No.5539 2018/07/20(Fri) 09:09:47

Re: 外部プログラムからのマクロの起動 / satocha
できます。
外部とは何か、実際にやりたいことは何かなど、もう少し具体的に書いてくだされば、「できます」以上の話もできるとは思いますが。

No.5540 2018/07/20(Fri) 09:31:38

Re: 外部プログラムからのマクロの起動 / 中川 智
どうも、pro版には、マクロを.exeに変換する機能がありますね。これの事でしょうか?
でも、確かpro版は6500円と書いてあったので、この値段を出すほどのことでもないんですよ。
free版でできるのであれば、教えてください。

外部というのは単純で他のプログラムからキックするだけの事です。

No.5547 2018/07/20(Fri) 14:13:53

Re: 外部プログラムからのマクロの起動 / satocha
ご質問の意味がいまひとつ掴みきれていないのですが。
「他のプログラムからキック」とはどういうことを言うのでしょう。

1)自作のプログラムからUWSCスクリプトを呼び出す
2)既存のプログラムの実行状況に応じてUWSCスクリプトを呼び出す

1ならとても簡単で、例えばバッチから呼ぶなら

UWSC.EXEのパス UWSファイルのパス

を入れたいところに書き込むだけです。CでもWSHでもpowershellでもさほど難しくないと思います

2なら多少厄介ですが、UWSCは実行中の他のアプリケーションのウインドウから表示文字列などを読み取ることが可能なので、その結果に応じて別スクリプトを呼び出すスクリプトを書いてやればいいです。

exe作成機能は上の例で、「UWSC.EXEのパス UWSファイルのパス」と書かなければならなかったのがexe化しておけばexeファイルのパスを書けば事足りるようになるというだけの話ですので、本質的には変わりません。pro版は現在入手できなくなっていますので、そちらを今、考える必要はないでしょう。

No.5550 2018/07/20(Fri) 14:46:30

Re: 外部プログラムからのマクロの起動 / satocha
追記
もし、comオートメーションの利用やrundllのような形で、
UWSCの一部の機能だけを自作プログラムから利用したいといお話でしたら、これは不可能です。
現時点では、UWSC.exeでuwsファイルを動かすという方法しかありません。

そのようなことができるWindows自動化ツールをお探しならAutoitXやAutoHotkey.dllを検索してみてください。

No.5551 2018/07/20(Fri) 14:59:06

Re: 外部プログラムからのマクロの起動 / トンボ
>1)自作のプログラムからUWSCスクリプトを呼び出す
タスクスケジューラでUWSC.exeを自動で起動させる方法もあります。タスクでの右クリックメニュー[実行する]で即起動も可能です。

スクリプトも自動で再生させたい場合は、UWSCのスケジュール設定を利用するとよいでしょう。お勧めのタイマー設定は「UWSC起動時」か「指定Windowが現れた時」ですね。

No.5557 2018/07/20(Fri) 18:17:12

Re: 外部プログラムからのマクロの起動 / 中川 智
ありがとうございます。
free版でもできますね。
これで、マクロを自在に外のプログラムからキックできます。
昔はWindowsにマクロレコーダーが標準でついていたので、このソフトがOSに添付されていないことが問題ですね(笑)。マイクロソフトに聞いてみたら「それはありません!」と返ってきたので、「無駄なマニアックなOSやな。」と再認識しました。Windows3.1は、500MBもあれば十分どころではないくらい余裕でしたが、今はWindows Updateで128GBでは、もう危ないので、意味のないアプリを無くせば良いし、カーネルも昔は1.44MBのフロッピーで余裕だったんですが(Linux)、今のOSは、無駄過ぎてマニアックで本当にしんどいですね。

まぁ、ヤフオクでライセンスが1000円くらいで売っているので、しゃーないか?くらいの物ですけどね。

No.5562 2018/07/21(Sat) 04:15:36
ファイルの場所を開いて選択状態にしたい / ライチ
■ 環境
OS: Windows7 Home Premium SP1 64bit

■ CLKITEM関数
以前、CLKITEM関数でできていたウィンドウ内のアイテム選択ができなくなってしまいました。
正確には、できる時とできない時があったが、できない時ばかりになってしまった、です。
OSのクリーンインストールをしてからのことです。それ以前はできていました。

■ ファイルの場所を開く
ファイルまたはフォルダのショートカットを右クリックした時に、
"ファイルの場所を開く" や、 "フォルダの場所を開く" という非常に便利な項目がでますが、
希望としては、できればこれと同等の操作をしたいです。

■ 試行錯誤
フォルダにファイルがたくさんある時、ウィンドウ下部にスライダーがでます。
そのスライダーを選択状態にしたいファイルがウィンドウ内に表示されるところまで移動させてから
CLKITEM関数を使うと、うまくクリックして選択状態にしてくれました。
そこそこ正確ですがかなり遅いので却下しました。
スライダーの移動は GETSLIDER, SETSLIDER関数を使用しました。

■ 試行錯誤2
Windowsボタンでスタートメニューを開き、"プログラムとファイルの検索" フォームに
目的のファイルまたはフォルダのパスを貼り付けて、検索され出てきたアイテムを右クリックすると、
"ファイルの場所を開く" や、 "フォルダの場所を開く" の項目がでます。
これをクリックすることで、目的の操作ができました。

が、できればもっとスマートな方法で ファイルの場所を開いて選択状態にできないでしょうか?
下にスクリプトを書いてみました。
#2でも良いのですが、スライダーが表示されるほどアイテム数が多い時、かなりの頻度で失敗してしまいます。
何か良い方法はないでしょうか。

// アイテム(windowsフォルダ)をクリックして選択状態にする。
// #1
id = FolderOpen() // フォルダを開く。
PRINT CLKITEM(id, "Windows", CLK_LISTVIEW or CLK_LEFTCLK or CLK_SHORT) // 選択(クリック)する。
MSGBOX("windowsフォルダがクリックできず選択状態にならない。<#cr>以前(現在と同じWindows7)はこれでマウスポインタの移動なしで選択できた。")
CTRLWIN(id, CLOSE); SLEEP(1) // ウィンドウを閉じる。

// #2
id = FolderOpen() // フォルダを開く。
PRINT CLKITEM(id, "Windows") // 選択(クリック)する。引数指定なし。
MSGBOX("windowsフォルダがクリックされ選択状態になるがマウスポインタがアイコンの位置に移動してしまう。")
CTRLWIN(id, CLOSE); SLEEP(1) // ウィンドウを閉じる。

// #3
id = FolderOpen() // フォルダを開く。
PRINT CLKITEM(id, "Windows", CLK_LEFTCLK or CLK_SHORT) // 選択(クリック)する。
MSGBOX("windowsフォルダがクリックされ選択状態になるがマウスポインタがアイコンの位置に移動してしまう。")
CTRLWIN(id, CLOSE); SLEEP(1) // ウィンドウを閉じる。

// #4
id = FolderOpen() // フォルダを開く。
PRINT CLKITEM(id, "Windows", CLK_ACC or CLK_SHORT or CLK_FROMLAST) // 選択(クリック)する。
MSGBOX("windowsフォルダがダブルクリックされ、フォルダが開いてしまう?")
CTRLWIN(id, CLOSE); SLEEP(1) // ウィンドウを閉じる。

FUNCTION FolderOpen()
 Result = -1
 DOSCMD("start <#dbl><#dbl> C:\") // フォルダを開く。
 id = GETID("(C:)", "CabinetWClass", 1) // ウィンドウID取得。
 CTRLWIN(id, SHOW) // 開かれたウィンドウを表示状態にする。
 Result = id
FEND

No.5536 2018/07/19(Thu) 22:46:35

Re: ファイルの場所を開いて選択状態にしたい / stuncloud
探せばあるもんですね

// targetで指定したファイル・フォルダが選択状態でExplorerが開かれる
// 半角スペースを含むパスでも<#DBL>で括る必要はないみたいです
target = "C:\Windows"
doscmd("explorer /select," + target)


個人的にはExplorerの操作って思うように行かないのでなるべく別の手段を取るようにしています
Explorerを開かないとできない操作ってそうそうないはずなので
もしExplorerを使わない方法に興味があるようでしたらご相談に乗りますよ

No.5542 2018/07/20(Fri) 11:15:15

Re: ファイルの場所を開いて選択状態にしたい / ライチ
>doscmd("explorer /select," + target)
ありがとうございます。まさに求めていたものです。

>Explorerを開かないとできない操作ってそうそうないはずなので
ウィンドウを開いてファイルを選択状態にすることが目的でしたのでこれで完璧ですありがとうございます。
スタンクラウドさん結構前からこの掲示板におられますよね。回答が適切で尊敬します。

No.5560 2018/07/20(Fri) 23:42:11
IEのウィンドウをshiftキー押すごとに最大化、上半分サイズ切り替え / ハロハロ
IEのウィンドウが最大化時にshiftキー押すと上半分サイズのウィンドウになり、上半分サイズのウィンドウの時にshiftキー押すと最大化になるスクリプト作成しているのですがうまくいきません。下記のスクリプトのどこが間違っているのでしょうか?
したい処理が、rSHIFTを押すごとにIEウィンドウを上半分サイズウィンドウ、最大化と切り替えをしたいです。

h = G_SCREEN_H / 2
w = G_SCREEN_W / 2

id=GETID("Internet Explorer")
ctrlwin(id, MAX)
// ACW(id,0,0,G_SCREEN_W,G_SCREEN_H/2)
a=STATUS(id,ST_MAXIMIZED)

while true

if getkeystate(VK_rSHIFT) then

if 1=a then
ACW(id,0,0,G_SCREEN_W,h)
endif

if false<>a then
ACW(id,0,0,G_SCREEN_W,h)
endif

endif
wend

//    ST_MAXIMIZED  // 最大化状態であればTrue、でなければFalse

No.5541 2018/07/20(Fri) 11:11:04

Re: IEのウィンドウをshiftキー押すごとに最大化、上半分サイズ切り替え / コンボイ
今のままですと、ループの外にWindowが最大かどうかの判断があるため
a=STATUS(id,ST_MAXIMIZED)
をループの中に入れる必要が有ります

また、シフトキーが押されたときの条件としては
if Windowが最大
高さを半分にする
else
Windowを最大にする
endif

とすれば、希望させる動きになると思います

No.5543 2018/07/20(Fri) 11:29:53

Re: IEのウィンドウをshiftキー押すごとに最大化、上半分サイズ切り替え / stuncloud
> どこが間違っているのでしょうか?
1) a=STATUS(id,ST_MAXIMIZED) がループ内で呼ばれていない
これだとaの状態が全く変わらないので希望の動作になりません
2) ループ内に最大化する処理が入ってない
1がなかったとしても最大化しない

while status(id, ST_ISID)
 if getkeystate(VK_rSHIFT) then
  getkeystate(0)
  if STATUS(id,ST_MAXIMIZED) then // 最大化してるときは上半分にする
   ACW(id,0,0,G_SCREEN_W,h) // ※1
  else // 最大化してない場合は最大化する
   ctrlwin(id, MAX)
  endif
 else
  sleep(0.1)
 endif
wend

右Shiftが押されたときにstatus()で最大化してるかどうか確認して状態に応じてIEのサイズを変更します
ループ中にCPU負荷が上がらないようにsleepを入れました
あと一回右Shiftを押しただけなのにサイズ変更が二度行われたりしないようにgetkeystate(0)してます

※1 ちなみにこのままだとマルチディスプレイ環境で困ったことになります (なりました
  その場合G_SCREEN_*ではなくmonitor()を使って画面サイズを得る必要があります

No.5544 2018/07/20(Fri) 11:36:10

Re: IEのウィンドウをshiftキー押すごとに最大化、上半分サイズ切り替え / ハロハロ
コンボイ様、回答ありがとうございます。
a=STATUS(id,ST_MAXIMIZED)をループの中に入れる必要があるとは分からなかったです。
また、一つ勉強なりました。

No.5548 2018/07/20(Fri) 14:20:35

Re: IEのウィンドウをshiftキー押すごとに最大化、上半分サイズ切り替え / ハロハロ
stuncloud様、完璧に希望どおりの処理できました。ST_ISIDを使用とはまったく思いつきませんでした。

>あと一回右Shiftを押しただけなのにサイズ変更が二度行われたりしないようにgetkeystate(0)してます
getkeystate(0)とは、どういう意味コードなのでしょうか?
GETKEYSTATEの()の中はキーコード名を入力だと思うのですが。

ex)
GETKEYSTATE(VK_RSHIFT)

No.5549 2018/07/20(Fri) 14:27:56

Re: IEのウィンドウをshiftキー押すごとに最大化、上半分サイズ切り替え / stuncloud
>getkeystate(0)とは、どういう意味コードなのでしょうか?
ループの中でgetkeystate(VK_rSHIFT)を何度も呼んでいると、一度しか右シフトキーを押していないのにgetkeystate(VK_rSHIFT)が2回続けてtrueを返してしまうことがあるんですね
(今回のコードで例えると、右シフトを1回押しただけなのに上半分表示にした次の瞬間最大化してしまうというようなことが起こりうる)
別のgetkeystate()を挟むとどうもそういうことが起こらないっぽいぞ、ということで念の為入れてる感じです

>GETKEYSTATEの()の中はキーコード名を入力だと思うのですが。
getkeystateの引数は定数です、そしてVK_*は全て数値です
VK_RSHIFTでなければ良かったので、なんとなく0にしました

No.5555 2018/07/20(Fri) 18:06:21
IEウィンドウ内でaltキーを押すと、メニューが表示・非表示と切り替えができるんですが、これをaltキーを押しても非表示のままに切り替えができないようにする方法はないでしょうか?IEウィンドウでgetkeystate(VK_alt)で指定した処理をさせているのですが、メニューの表示・非表示が毎回切り替わり 面倒なのでこれをaltキーを押したら指定した処理だけをするようにしたいです。 なにか良い方法ないでしょうか? / ハロハロ
IEウィンドウ内でaltキーを押すと、メニューが表示・非表示と切り替えされてしまうのですが、これをaltキーを押しても非表示のままに切り替えができないようにする方法はないでしょうか?

IEウィンドウでgetkeystate(VK_alt)で指定した処理をさせているのですが、メニューの表示・非表示が毎回切り替わり
面倒なのでこれをaltキーを押したら指定した処理だけをするようにしたいです。
なにか良い方法ないでしょうか?

No.5553 2018/07/20(Fri) 15:07:05


 過去ログ(〜2017/08/24)・検索ツール


以下のフォームに記事No.と投稿時のパスワードを入力すれば
投稿後に記事の編集や削除が行えます。
200/200件 [ ページ : << 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ... 20 >> | 過去ログ ]