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

タイトル (必須)
 お名前 (必須)
文字色
設定保存削除/編集パス  

配列変数サイズが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つ左右に表示させる方法 NEW / 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つ左右に表示させる方法 NEW / 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
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キーの関連性は定められたため、切り替わりは防げません。また、ALTキーの本来の役割を考えると、別のキーにすることを推奨します。
どうしてもというならALTキー手動押下後に、SCKEY関数などでもう一度ALTキー押下させるとよいですね。

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

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

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

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

No.5564 2018/07/22(Sun) 13:45:13
外部プログラムからのマクロの起動 / 中川 智
タイトルの通りですが、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
uwscをダウンロードしたいです / OPPA
uwsc公式サイトとダウンロード用のサイトがなくなっています。
僕にuwscをダウンロードさせてください

No.5561 2018/07/21(Sat) 00:27:27
ファイルの場所を開いて選択状態にしたい / ライチ
■ 環境
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
ファイル書き込み後のFCLOSEで LFがCRLFになってしまう / sasaki
ファイル(UTF-8 bomなし 改行コードLF)をコピーし、
コピーしたファイルに書き込みを行うと 改行コードが CRLFになってしまう現象に悩んでおります。

コード例

srcFile = "srcUTF-8_LF.txt"
destFile = "dstUTF-8.txt"

CMDSTR = "copy <#DBL>" + srcFile + "<#DBL> <#DBL>" + destFile +"<#DBL>"
DOSCMD(CMDSTR,FALSE,TRUE)

//この時点では、destFile も 改行コード LF


//改行LF付きの文字列を作成
wks = "何らかの文字列" + chr(10)

//コピー先に書き込み
fid = FOPEN(destFile, F_WRITE8)
FPUT(fid, wks, F_ALLTEXT)
FCLOSE(fid)
//改行コードが CRLFになってしまう。


LFのままにしたいのですが、どうすればよいのでしょうか。
UWSC Pro Ver 5.3.0.2
Windows10 Pro 64bit

No.5533 2018/07/19(Thu) 13:36:57

Re: ファイル書き込み後のFCLOSEで LFがCRLFになってしまう / koi
UWSCのファイル関数は標準ではテキスト前提で操作されるので
そこでOSによって自動変換されてしまうのだと思います

確認してませんが
以下にバイナリの読み書き例が書かれているので
それを参考にバイナリファイルでの操作をしてください

d.hatena.ne.jp/junjun777/20110607/uwsc_binary_io

No.5534 2018/07/19(Thu) 14:44:24

Re: ファイル書き込み後のFCLOSEで LFがCRLFになってしまう / sasaki
koi 様、アドバイスありがとうございます。
UWSC関数のパラメータなどで変更できるのであれば助かるな・・・と思っているのですが、
ご教示いただいた内容ですと、コードとして検証しなおす必要もあるので
どうしようかなぁという感じです。笑

UWSCが現状停止状態のようですし、
最悪はPythonでかきかえようかとも考えています。

No.5535 2018/07/19(Thu) 14:50:42

Re: ファイル書き込み後のFCLOSEで LFがCRLFになってしまう / siguma
私の環境(UWSC フリー、Win7 32bit)ではオプションでF_NOCRを付けると上手くいきましたよ、ご参考までに。

fid = FOPEN(destFile, F_WRITE8 or F_NOCR)
FPUT(fid, wks)
FCLOSE(fid)

No.5537 2018/07/20(Fri) 01:55:37

Re: ファイル書き込み後のFCLOSEで LFがCRLFになってしまう / sasaki
siguma様、ご回答ありがとうございます。
確かに当方でも確認ができました。

No.5538 2018/07/20(Fri) 08:57:03

Re: ファイル書き込み後のFCLOSEで LFがCRLFになってしまう / koi
質問者さんがそれで問題ないという認識ならかまわないのでしょうが

手元では
F_NOCR のヘルプ記載にもあるように
最後のCR・LFがつかなくなるだけで
文字列中に複数 CR があった場合には それは全て CR LF変換されますし
最後の CR自体も書き込まれていません
(Win7にて確認)

No.5545 2018/07/20(Fri) 12:15:49

Re: ファイル書き込み後のFCLOSEで LFがCRLFになってしまう / sasaki
koi様、
ご確認いただきありがとうございます。

このあたり自分でも色々確認してみようと思います。
実はいまのところ、目的の動作にはなるようでした。

FPUTで F_ALLTEXTをつけるとCRLFになってしまうことも確認していますが、
正式なサポートが得られない現状ですので、とりあえず本件はクローズします。

色々とありがとうございます。

No.5546 2018/07/20(Fri) 12:27:19
ウィンドウの移動ができない / yukimaru
UWSC初心者なのですが、ACWでのウィンドウの移動やサイズの変更が一部のウィンドウでできません。

id = GETID("新しいテキスト ドキュメント")
PRINT "タイトル " + STATUS(id, ST_TITLE)
ACW(id, 10, 10, 1282, 759)

↑このように入力すると位置とサイズが変わるのですが、
他のウィンドウを対象にすると変わらない場合があります。

ACWで変更できない場合はウィンドウ側に問題があるのでしょうか?

分かる方がいましたら教えていただきたいです。

No.5529 2018/07/15(Sun) 22:20:25

Re: ウィンドウの移動ができない / stuncloud
いくつか考えられます

1) 実行ユーザーが異なる

例えば対象のアプリケーションを「管理者として実行」している場合
UWSCも「管理者として実行」しないとACWできない

これがありがちなパターンですね
この場合は実行ユーザーを合わせればOK

2) 実態の異なるウィンドウ

idを取得したウィンドウと実際目に見えてるウィンドウが別物の場合

例えばウィンドウタイトルが同じで不可視のウィンドウのID取っちゃってたというようなパターン?
この場合は適切なウィンドウIDを得ればOK、多分

3) Windowsの作法で作られてないウィンドウ

なんかもうどうしようもないやつ的な…
そういうのがあったとして、の話ですけどACWどころか他の操作もできないと思うのでもう諦めるしかない…?

No.5531 2018/07/16(Mon) 16:56:21

Re: ウィンドウの移動ができない / yukimaru
ありがとうございます!
無事解決しました。

一部できなかったものは管理者として実行していようで、
仰る通りにUWSCも管理者として実行したら無事動かすことができました。

No.5532 2018/07/16(Mon) 22:56:39
★ 月日を見つけて年月日に変換する / SEN
返信が遅くなり書き込めませんでしたので、新規で失礼します。
10年間の感謝も込めまして。

----------------------------------
ありがとうございます。

私にとっては、UWSCは仕事のサポートのみです。
近くの本屋で、小林シンヤさんの「WINDOWSマクロテクニック」を手に取り、UWSCに「ビビビ」ときて以来、
10年位になるでしょうか?プログラムの腕は全く上がらず、困った時はUWSCの掲示板に「神頼み」で何とかここまできました。

それでも、UWSCのプログラムは、毎日朝から夜までUWSCは働きっぱなしです。
疲れた時にも全く作業の精度は全く落ちず(コンピューターですから)、パソコンに背中を向けている間に作業が終了しています。

本のように颯爽と定時で帰社は全くありませんが、今UWSCがなかったら仕事は終わってないのは明白です。
UWSCで置き換えれば仕事がクリアできるだろうと思う事が次から次へと湧いてきて、うまくいった時は感激です。

本当にありがとうございます。

No.5530 2018/07/16(Mon) 01:18:16


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


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