[ 掲示板に戻る ]

過去ログ閲覧モード

exeファイルの常駐化 / 裕紀
Pro版でのexeファイルを常駐ソフトとして利用したいと考えたのですが,常駐させることは出来るでしょうか?
exeファイル自体をバックグラウンドで起動するファイルが存在しても構いません

No.431 2014/11/14(Fri) 07:35:07

Re: exeファイルの常駐化 / koi
常駐ってのがタスクトレイへの常駐なら標準スクリプト関数だけでは無理
古いですが参考過去ログ
http://www3.bigcosmic.com/board/s/board.cgi?id=umiumi&start=110&log=ON&cnt=15
APIをコールもできるのでかなり苦労すればできなくはないような気もしますが
はっきり言って手間がかかるだけではないかと思います

違うと思うけどメモリに常駐って意味なら終了しなければいいだけです

No.432 2014/11/14(Fri) 16:16:34

Re: exeファイルの常駐化 / 森
あっ!これは私も常々考えていたことです。
こちらにヒントがあります。
http://www.hiramine.com/programming/windows/trayapplication.html
移植には、かなりのスキルが必要かと思いますので、
「あの」方々が喰い付いてくれればなぁなんて期待しています^^

No.434 2014/11/14(Fri) 17:18:12

Re: exeファイルの常駐化 / しゅん
「あの」方々がどなたか不明ですが、、、(sで始まる人かな)。
Win32APIで作成しないなら、そんなに大変ではありません。
タスクトレイアイコンのクリック等が拾えるので、それを受けてPOPUPMENUとかを出すと良いと思います。
http://d.hatena.ne.jp/junjun777/20141114/uwsc_notifyIcon

そうそう、少し変更すると、EXEファイルからアイコンを取り出すとかもできます。
EXE化した場合は、自EXEから取り出した方が良いかもしれませんね。
あと、アイコンデータを内包することも可能です。

No.435 2014/11/15(Sat) 00:10:14

Re: exeファイルの常駐化 / 森
しゅんさん
ありがとうございます!
以前もこんな釣り方をしましたね^^;

> sで始まる人かな
ローマ字表記も含めると名回答者は「S」で始まる方が多い掲示板ですね^^

特に私が質問をした際には、「s」の方と「しゅ」の方に助けられることが多いので、
いつも本当に感謝しています。

もちろん他の「S」で始まる方々にも、「S」で始まらない方々にも感謝感謝です!

No.437 2014/11/15(Sat) 08:50:31

Re: exeファイルの常駐化 / stuncloud
>「あの」
僕は真っ先にしゅんさんを思い浮かべましたよ!

exeファイルのショートカットをスタートアップにコピーしておけば、ログオンの度に実行されるようになるのでより常駐アプリっぽくなりますね
>exeファイル自体をバックグラウンドで起動する

No.439 2014/11/15(Sat) 15:40:29

Re: exeファイルの常駐化 / 森
> stuncloudさん
この掲示板にも「いいね!」ボタンが欲しいコメントで〜す!

No.441 2014/11/15(Sat) 21:00:40

Re: exeファイルの常駐化 / 裕紀
なるほど様々な回答ありがとうございます。
しゅんさんの回答を参考に色々行ってみます
exeファイルに出力しての運用だったので最初のif文を通らなかったことに私は気が付かず土日に悪戦苦闘してましたw
このようなプログラムをさっさと作れる方々がとてもうらやましいです
私の為に様々な事を行ってくれた方々に感謝します。

No.448 2014/11/16(Sun) 17:13:34

Re: exeファイルの常駐化 / しゅん
すみません、私の書くスクリプトは基本的にCALLして使うことを想定しています。
このため、サンプル部分にあのような制約を入れているのです。

なお、作成したスクリプトですが、環境によっては、
NotifyIcon.Start関数のGETID(formName)が待てないことがわかりました。
このため、少し修正しました。
http://d.hatena.ne.jp/junjun777/20141114/uwsc_notifyIcon

No.458 2014/11/17(Mon) 22:59:55

Re: exeファイルの常駐化 / 裕紀
了解しました
色々自分の知識の幅を広げるのに使わせていただきます!

No.459 2014/11/18(Tue) 00:04:05
web上の監視 / ztom
SENDSTR(0, ie.document.body.innerTEXT)
str = GETSTR(0)
temp = BETWEENSTR(STR,"ここから","ここまで")
text = COPY(temp,1,7)

上記のような文をループさせて、web上の指定文字をほぼリアルタイムに取得しているのですがPCの環境が変わると文字の位置が変わる事があるらしく、起動するPCによっては期待する結果になりません。
環境に依存されずに確実に指定した部分を抽出する方法がないかアドバイス頂けませんでしょうか。

宜しくお願い致します。

No.456 2014/11/17(Mon) 19:03:48
Input タグ IESETDATA / Nagatani
いつも質問ばかりで申し訳ありませんIE11とPRO5.0.3.0を使用していますがRecIeを使用してもホームページアドレスになるため簡素化できないでしょうか?

ビックカメラの検索ボタンで「要素の検索」には下記の用に書かれています。

<input onclick="javascript:inputCheck();" type="button">

アドバイスよろしくお願いいたします。

No.449 2014/11/16(Sun) 18:14:11

Re: Input タグ IESETDATA / Nagatani
お疲れ様です。ビックカメラと記載致しましたが、ヨドバシカメラの誤りでした。
また、<input onclick="javascript:inputCheck();" type="button">
IE.NAVIGATE("javascript:inputCheck();") // Input
で無事解決致しました。
ありがとうございました!

No.453 2014/11/17(Mon) 09:09:08
powershell戻り値の文字列比較 / satocha
powershell関数の戻り値と文字列の比較が意図通り動かなかったので調べてみました。
会社のWin7、UWSC5.03で次のテストプログラムを実行すると、順に、5、True、0と表示されました。
ps ="$true"
ps_out=trim(powershell(ps))
msgbox(length(ps_out))
msgbox(ps_out)
msgbox(ps_out="true")

一方、私物PC(VirtualBox上のWin7、UWSC5.03)では4、True、1となり文字列比較の結果が異なります。さらに調べると会社PCではunicodeのBOMが出力されているため文字比較がおかしくなっていることが分かりました。
違いの原因は会社PCのpowershellバージョンがWin7デフォルトの2.0で、私物PCは4.0にバージョンをあげていることだとにらんでいます。
とりあえずの措置として、powershell出力に次のdebomをかませていますが、
function debom(str) //str先頭2バイトががユニコードのbom(0xFEFF=65279)なら取り除く
result = str
if ( asc( str ) = 65279 ) or ( asc( str ) = 65534 )
result = copyb( str, 2)
endif
fend


どうしてもコードが煩雑になってしまいます。
Windows側に原因がある可能性が濃厚ですので、UWSCが対処しなければならない問題ではないかもしれませんが、powershell関数でBOMを取り去るか、せめて、trim関数で取り除けるようになっていると助かります。

No.444 2014/11/16(Sun) 02:13:51

Re: powershell戻り値の文字列比較 / umiumi
確認しました。
対処します。

No.451 2014/11/16(Sun) 23:59:22
debugger。次元が10以上no配列の中身を見る方法 / kit
debuggerについて、質問がございます
次元が10以上ある配列の中身をlocal窓のValueで見られません(...で省略)
どのようにして調べておられますか?



Option Explicit
dim sss[20],dummy

sss[1] = "k"
sss[0] = "k"
sss[20] = "k"
print sss[20]


以上、よろしくお願いいたします

No.443 2014/11/15(Sat) 23:26:45

Re: debugger。次元が10以上no配列の中身を見る方法 / umiumi
現状では配列の中身表示は 10コまでです。
それ以上は自前で処理してください。
Balloon(JOIN(sss, ",", False, 10, 19))  // sss配列の10〜19

No.450 2014/11/16(Sun) 23:58:06
dosCmdでプロセスが終了できない / noname
ここ最近(11月入ってから?)
今まで動作していたプログラムの動きが変だったので質問させてください。
プログラムの中でdosCmdを使用してタスクを終了させているのですが、タスクの終了ができなくなってしまいました。

試しに以下のコードでメモ帳を終了できるか試しましたが、終了出来ませんでした。
dosCmd("taskkill /im notepad.exe")

コマンドプロンプトで以下を実行した場合は終了出来ました。
taskkill /im notepad.exe

対処法、或いは別のタスク終了手段はありますでしょうか?

環境
UWSC:5.0.3.0(管理者起動)
OS:Win7 x64

No.436 2014/11/15(Sat) 05:20:11

Re: dosCmdでプロセスが終了できない / koi
それまで動いてたってことなので違うかもしれませんが
>dosCmd("taskkill /im notepad.exe")
taskkillをフルパスで書いても変わりませんか?
以前自分でやってた時
コマンドプロンプトのパス設定とは別管理のためフルパス記載でないと
動かなかったような記憶があるようなないような

>或いは別のタスク終了手段
EXECコマンドでも変わりませんか?
ただし実行時一瞬窓が開きますがどうしても表示したくない場合は
更にVBSにするなどの一手間で対処可能かと思います

No.440 2014/11/15(Sat) 19:52:01

Re: dosCmdでプロセスが終了できない / noname
koiさん回答ありがとうございます。

まず以下のコマンドでフルパスでの動作を確認致しました。(sleep略)
Exec("notepad",100,0,0)
Exec("C:\windows\system32\notepad.exe",100,0,200)
dosCmd("taskkill /im notepad.exe")
dosCmd("taskkill /im C:\windows\system32\notepad.exe")

結果はメモ帳が二つ起動し、両方消えませんでした。(フルパス有無個別でも消えず)

次に、ExecコマンドのClose命令で削除してみました。(サンプルの動作確認)
こちらではタスクを終了することができました。

なので、とりあえずExecコマンドでタスク終了をさせるように変更することで解決しました。ありがとうございました。

No.445 2014/11/16(Sun) 03:11:37

Re: dosCmdでプロセスが終了できない / noname
>次に、ExecコマンドのClose命令で削除してみました。(サンプルの動作確認)
間違えました;;

Execコマンドでのタスク終了手段が見つけられなかったので
ctrlWinコマンドのClose命令で削除してみたら、削除出来ました。

No.446 2014/11/16(Sun) 03:24:12

Re: dosCmdでプロセスが終了できない / koi
>結果はメモ帳が二つ起動し、両方消えませんでした。(フルパス有無個別でも消えず)
解決してるようですが一応
私が書いたフルパスで指定しても変わりませんかってのは
notepadの方をフルパスでって意味ではなくて taskkillコマンド自体をフルパスで
という意味でした

No.447 2014/11/16(Sun) 07:01:15
Inputの押されたボタンを判断する方法 / しろまさ
re = Input()

上記で @「未入力でOKクリックの場合」と A「キャンセルクリック or ESCされた場合」でreに空白が入ります。

未入力値で更新をするか否かを判断するために
@とAの違いを判断したいのですが何かいい方法はありますでしょうか?

No.429 2014/11/13(Thu) 08:57:00

Re: Inputの押されたボタンを判断する方法 / しろまさ
@だとEmptyでは無くなることを投稿してから気が付きました。

お騒がせしました。

No.430 2014/11/13(Thu) 09:05:58
chromeでYahoo!路線情報の駅名が入らない / T_T
 OS:Windows7
 chrome:38.0.21.25.111m

サンプル#n37を参照しながら、chromeでYahoo!路線情報を自動入力しようとしましたが、駅名が入力できません。何が悪いのでしょうか。
尚、最後のmsgboxは表示されますので途中でエラーにはなっていないと思います。

path="C:\Program Files\Google\chrome\Application\chrome.exe"
id = Exec(path + " --force-renderer-accessibility --process-per-tab --new-window http://transit.loco.yahoo.co.jp/")
表示完了待ち(id, "乗換案内")
SENDSTR(id, "新宿", 4, true, true)
sleep(1)
SENDSTR(id, "渋谷", 5, true, true)
sleep(1)
msgbox("処理が終了しました")

Procedure 表示完了待ち (id, item)
while true
sleep(0.4)
for n in GETITEM(id, ITM_ACCCLK or ITM_ACCTXT)
sleep(0.2)
if n = item then Exit
next
wend
Fend

No.418 2014/11/11(Tue) 00:13:01

Re: chromeでYahoo!路線情報の駅名が入らない / stuncloud
sendstrがダメみたいですねぇ
このページを開くと必ず「出発」にフォーカスが当たっているようですので

sendstr(0, "新宿")
sckey(id, VK_CTRL, VK_V)
sckey(id, VK_TAB)
sendstr(0, "渋谷")
sckey(id, VK_CTRL, VK_V)

としてペーストで入力するというのはどうでしょう

No.427 2014/11/12(Wed) 10:19:01

Re: chromeでYahoo!路線情報の駅名が入らない / umiumi
確認しました。
対処します。

No.428 2014/11/12(Wed) 21:53:27
不義愛報告 と 質問 / koi
Ver3.0.3 Free版をWin7(32bit)で使っていますが
何点か不具合と思われる現象が出ていますのでご報告します

いずれも回避策などで対処していますので致命傷というわけではありません
もしかしたら使い方の問題というのもあるのかもしれません

1.
OPTION LOGPATH でログファイルを指定したとき作成されるファイルの
タイムスタンプが動作時の日時になっていない
(デフォルトのUWSC.LOGの場合はきちんと反映されている様)

2.
SAVEIMGでBMPファイル作成しているが1と同様に作成日時が
正常でないものが出来上がることがある
※ 事があると書いたのは正常な日時で作成されているものもある為
  (ファイル名などの問題?)

3.
プログラム中で SHFY+Aは処理A  SHFY+Bは処理B・・・・ を行おうとして
WHILE TRUE

  MOUSEORG(ID[n], MORG_CLIENT, MORG_BACK)
 
  IF GETKEYSTATE(VK_SHIFT)
    IF GETKEYSTATE(VK_A)
      処置A
    ENDIF

    IF GETKEYSTATE(VK_B)
      処置B
    ENDIF
  ENDIF

  n=n+1

  SLEEP(0.1)
WEND

といった処理を行っているが Aキークリックの数秒後
SHIFTクリックしている(同時押しではない)のに処理 Aが動くことがある




以下の事が出来ないか悩んでいます いい方法あるでしょうか

1.
プログラム(=スクリプト)でのマウス制御がユーザ操作や
他のプログラムのマウス制御に干渉されて誤動作する(正常動作しない)事を防ぎたい

当たり前ですがプログラム実行中にユーザがマウスを操作しなければ
問題は起こりませんし1本しかプログラムを動かさないのであれば問題はありません

現状以下のような方法でINIファイルを書き換えてロックをかける方法をとっていますが
100%確実な方法とはなりえていません
  キーボード・マウス操作不可にして1秒後に実動作させるようにしているが
  それでも時々誤動作している
  Windowsのメッセージキューの関係もあるのだろうとは思っていますが

マクロをまとめて一つにするるのは作成時期が別々のため困難な状況です

メイン処理で以下の sample関数を繰り返す

PROCEDURE sample()
  InterLock = READINI("SYSTEM", "LOCK", GET_UWSC_DIR + "\UWSC.INI")
  if (InterLock = TRUE) EXIT

  InterLock = TRUE
  WRITEINI("SYSTEM", "LOCK", InterLock, GET_UWSC_DIR + "\UWSC.INI")

  LOCKHARDEX(0)

  SLEEP(1)

  実処理(マウス制御処理やウインドウ切り替え操作など各種処理)

  LOCKHARDEX()

  InterLock = FALSE
  WRITEINI("SYSTEM", "LOCK", InterLock, GET_UWSC_DIR + "\UWSC.INI")
FEND

No.391 2014/11/09(Sun) 08:51:46

Re: 不義愛報告 と 質問 / 竜田
念のため最新の5.0.3を使って見てください。
No.395 2014/11/09(Sun) 22:56:57

Re: 不義愛報告 と 質問 / koi
>念のため最新の5.0.3を使って見てください
それ使ってるんだけど  と思ってよく見たら  3.0.3なんて書いてますね
5.0.3の書き間違いです

No.397 2014/11/09(Sun) 23:25:53

Re: 不具合報告 と 質問 / しゅん
1.2.について、再現するスクリプトを提示してください。
手元の環境(Win7 x86)では問題ないようでした。
3. GETKEYSTATEは、呼ばれる前に押されていたかを見ます。
なので、SHIFTと同時押しのように確認したい場合、GETKEYSTATE(VK_SHIFT)の前にGETKEYSTATE(VK_A)を入れて、Aキーのフラグを一旦クリアしてください。
Bキーもクリアする必要があるでしょう。

誤動作は、だいたい問題なさそうに見えますが、細かくは穴がありますね。
ただ、実態としてはそれで問題のない可能性があります。
どう動かしているのか、もう少し全体的に把握できるようなスクリプトがないと、私には回答できません。

No.398 2014/11/09(Sun) 23:50:31

Re: 不義愛報告 と 質問 / koi
>1.2.について、再現するスクリプトを提示してください。」
これに伴って改めて確認したところ
UWSCの不具合ではなくてOSの設定の問題であることが分かりました

エクスプローラでファイル見ても情報が更新されないのでてっきり
UWSCの問題だと勘違いしたようです  あ騒がせしました
(エクスプローラ表示で更新日時でなく作成日時を表示していた)

3に関してはそういった仕様の関数だということで了解しました

>どう動かしているのか、もう少し全体的に把握できるようなスクリプト
処理の一例ですが以下のようなスクリプトで
画面切り替え異常が発生するため以後の処理が不可能になるといった状況です
   マウスクリックの際に別のWindowに代わってしまっている
   という誤動作もあったような

if (GETID(GET_ACTIVE_WIN) <> BrouserID[BrouserNo])
  StartTime[BrouserNo] = GETTIME()
  while (GETID(GET_ACTIVE_WIN) <> BrouserID[BrouserNo])
    ACW(BrouserID[BrouserNo])
    sleep(0.1)
    IF ((GETTIME() - StartTime[BrouserNo]) >= 5)
      PRINT "画面切り替え異常"
      LOCKHARDEX()
      InterLock = FALSE
      WRITEINI("SYSTEM", "LOCK", InterLock, GET_UWSC_DIR + "\UWSC.INI")
      exit
    endif
  wend
endif

以後切り替えたアクティブウインドウに対して操作(例えば)
BTN(LEFT, CLICK, clickX[BrouserNo], clickY[BrouserNo])

といった流れの処理を行っています
操作対象Window全てが重ならないように配置できるんなら解決するんですけど
そういうわけにもいかず

以前Zオーダ操作(TOPMOST設定だったかな)して
強制的に最善画面にするという方法もとったのですがの
UWSCのprintログ画面が不確定で最前画面に切り替わるといった現象があり
それに邪魔されるなどして結局はうまくいっていません

No.399 2014/11/10(Mon) 00:34:28

Re: 不具合、、、じゃないか / しゅん
回答でないので、書き込んで申し訳ないですが、、、
「もう少し全体的に」という書き方が悪かったですね。すみません。
私の手元で現象が再現するスクリプトがないと、私には回答できません、ということです。

No.416 2014/11/10(Mon) 22:34:14

Re: 不義愛報告 と 質問 / しろまさ
> 3
押されている間は捕まえるのが間違いないですけどね。(適当にsleepは必要)

 IF GETKEYSTATE(VK_SHIFT)
   WHILE GETKEYSTATE(VK_SHIFT)
     IF GETKEYSTATE(VK_A)
       処置A
       Repeat; Until ! GETKEYSTATE(VK_A)
     ENDIF
     IF GETKEYSTATE(VK_B)
       処置B
       Repeat; Until ! GETKEYSTATE(VK_B)
     ENDIF
   WEND
 ENDIF

No.420 2014/11/11(Tue) 09:59:31

Re: 不義愛報告 と 質問 / koi
>押されている間は捕まえるのが間違いないですけどね。(適当にsleepは必要)

空読みの方法に関してですが書かれた方法だと
A押して数秒おいてからSHIFT押したってときには対応とれないので
(SHIFT離した後数語にAが押されたら結果は同じ)
若干反応の悪さが気になりますがやむを得ないので現状は各キーを2度読みして
andを行った結果を判断することで対処することにしました
(もっとも反応の悪さは以前から感じてたので気にしないようにします)

IF GETKEYSTATE(VK_SHIFT) を
IF (GETKEYSTATE(VK_SHIFT) and GETKEYSTATE(VK_SHIFT)) のように変更

No.421 2014/11/11(Tue) 11:26:37

Re: 不義愛報告 と 質問 / しろまさ
> A押して数秒おいてからSHIFT押したってときには対応とれないので
とれますが? だらだら書き込む前に実際に試して下さいね。

> もっとも反応の悪さは以前から感じてた
自分のCODEに問題が無いと思っているうちは反応が悪いままでしょうね。(なまさん、ごめん)

No.422 2014/11/11(Tue) 13:54:46

Re: 不義愛報告 と 質問 / koi
>とれますが? だらだら書き込む前に実際に試して下さいね。
いやコード見ても対応とれてるように見えないし
実施そのコードで試しても予想道理何も変わりませんでしたが・・・・

No.423 2014/11/11(Tue) 15:59:38

Re: 不義愛報告 と 質問 / stuncloud
>3.
こういうのはsethotkeyを使うべきですね

const DEFAULT_MESSAGE = "Shift+A か Shift+B 押す"
sethotkey(VK_A, MOD_SHIFT, "proc")
sethotkey(VK_B, MOD_SHIFT, "proc")

fukidasi(DEFAULT_MESSAGE)
while TRUE
 sleep(0.1)
wend

procedure proc()
 fukidasi("処理" + chr(HOTKEY_VK) + "実行中")
 if msgbox(chr(HOTKEY_VK)) = BTN_CANCEL then exitexit
 fukidasi(DEFAULT_MESSAGE)
fend

No.424 2014/11/11(Tue) 16:31:26

Re: 不義愛報告 と 質問 / koi
>>こういうのはsethotkeyを使うべきですね
通常であればそれが順当なのかもしれませんね
この質問に書かなかったのですが
書き込みNo389 で以下と同じようなことを書かせていただきました

ただ私のスクリプト作成・運用方法に起因しますが
同一スクリプト起動された時自分自身で起動済みのスクリプトを
強制終了すように組んでいる事もあり
設定したHotKeyがスクリプト強制終了でも誤動作の原因になることを恐れて
極力HotKeyは使わない方向で作成しています
(通常GUI使わずランチメニューなどから別プロセル起動などさせて使っています)
  その意味ではGUIでのSTOP行った時もどうなるのかが不安ですが
  実際に悪影響が残るかどうかは未検証です

正直言えばそれほど使いこなしてないのでHotKeyの存在自体を考えていなかった
というところです

No.425 2014/11/11(Tue) 18:11:45
高レベル記録続き / 小泉寿男
koiさん 回答有り難うございます。しかしながらそれだけでなく動作しないのです。
ちなみにゲソテンのbejimon農場で記録したものが下記です

id = GETID("ベジモン農場 byGMOのゲームプレイページ|ゲソてん byGMO - Windows Internet Explorer", "IEFrame", -1)
以上
これだけが記録され、再生をしても何も反応しないのです。

No.406 2014/11/10(Mon) 16:41:24

Re: 高レベル記録続き / koi
だから書いてるじゃないですかそれだけのコードで見た目は何も変わりませんよ
(動いてるけど何もわからない)

一度スクリプトのヘルプを読むことをお勧めします
あと返信で書けば別の質問にならずに前の質問の下に張り付きます

No.407 2014/11/10(Mon) 17:16:02
全1170件 [ ページ : << 1 ... 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 ... 117 >> ]