116274
UWSC 仮 掲示板
投稿時に「証明書が不正です」と出る場合には、JavaScriptをオン
動作不具合での質問の場合には環境を表記(OS,バージョン等)
タイトルは内容を表し、内容はネットゲーム関係禁止
自身でコードを書く気の無いナマケモノは特に質問禁止
失敗作でもコードを投稿すること(具体性の無い質問は無視される可能性大)

UWSC掲示板 が復活することを祈り、それまでの繋ぎとして。
環境設定[s7777777]

訃報 / とも
お久しぶりです。本家の掲示板、UBTrek ではお世話になりました。

すでにご存じの方も多いようですが、作者、うみうみさんは、2018年頃に亡くなられていたようです。

http://itot.blog.jp/archives/21432032.html
https://wiki3.jp/CSWU/page/9

Ver1.0 から長きにわたり愛用してきたツール、作者うみうみさんとは同年代であることも知り、早すぎる死に、悲しみを禁じえません。
実質、後継の掲示板のようですので、この場を借り、ご生前のご功績を偲び、心よりご冥福をお祈り申しあげます。

No.1090 2021/01/15(Fri) 23:26:04

Re: 訃報 / ばっくやーど
はじめまして、uwscのいちファンです。uwscを今でも趣味で多用しています。
uwscは非常に使いやすく便利なソフトウェアです。
このような便利なソフトウェアを開発し、無料で提供されてこられたことに深く感謝します。僭越ながら、この場を借りてご冥福をお祈り申し上げます。

以下、独り言です。
2018年あたりにVectorでpro版を購入しようとしたところ音沙汰がなく心配していました。それから2年以上の月日が経ち、もうuwscが更新されることはないということを受け入れました。残念に思う中、uwscの機能をプログラミング言語のRubyのgemとしてrequireして使えるようなDLL形式のファイルを作りたいなどと妄想しましたが、既にuwscの代替ソフトウェアを開発しようとされている方がおられたり、海外製ですがAutoItなどの類似ソフトウェアがあることを知り、そちらに期待を寄せています。
uwscという表現は本当に素晴らしい先見性があり、また利便性における適切な粒度を兼ね備えています。このようなコミュニティの場があることに感謝と尊敬の念を感じます。長文失礼します。

No.1091 2021/01/16(Sat) 00:22:29

Re: 訃報 / しろまさ
ともさん、お久しぶりです。その節はお世話になりました。

ともさん、たくろーさん、情報ありがとうございます。
誰しもいつか亡くなるとはいえ、あまり受け入れたくないのは私だけでしょうか。

ですが、umiumiさんの残した功績は大きく、多くの人がuwscの継続を望んでいます。
そして現在、stancloudさんが後継ソフトuwscrを開発中です。
もしよければ皆様もDiscordでuwscrの発展に一役買って頂けたら幸いです。

UWSCR #リリース情報
https://discord.com/login?redirect_to=%2Fchannels%2F756513860894064781%2F761398651456847932

追伸.ともさんのDiscord参加を大変期待しております。

No.1094 2021/01/16(Sat) 09:24:51

Re: 訃報 / とも
ディスコードのアカウント作って、フレの申請されていただきました。
しかし、現場を離れて久しく、たま〜に趣味で書いてる程度。
役に立てるとは到底思えませんが、冷やかしにちょくちょく覗かせて頂きますね。

No.1108 2021/01/25(Mon) 14:02:11

Re: 訃報 / stuncloud
ありがとうございます!
今なら要望言ってもらうとできる範囲でですがわりと採用しちゃいますよ!
個人でやってると気付けなかったような点を指摘してもらえてるので非常に助かります
UWSCにはないけど実は欲しかった機能、なんてのでもOKです
(他ならぬ僕が新機能追加しまくってるので)

No.1109 2021/01/25(Mon) 15:20:28

Re: 訃報 / しろまさ
ともさん、ありがとうございます(_ _)
趣味でもともさんの知識量は必ず役に立つと考えております。

私もstuncloudさんの受けの良さに甘えて色々要望出してます。
皆でUWSCを超えるものを作り上げましょう。

No.1110 2021/01/25(Mon) 15:24:13

Re: 訃報 / とも
> 今なら要望言ってもらうとできる範囲でですがわりと採用しちゃいますよ!

ほんとに?!
プロジェクトを追いかけきれてないので、既出もあると思いますが、
3つほど〜
1.インクリメント、デクリメント演算子
++, --, だけでも欲しい〜
2.三項演算子
単純な IF の代わりにかけるからコードがものすっごくすっきりするのよね
3. Class(Module) のインスタンス化
いわずもがな、Class を名乗るなら、インスタンスにできないとね

1,2ははっきりと、3はむずいかな?で却下されちゃった記憶があります。どれもあるとすっごい便利!

>趣味でもともさんの知識量は必ず役に立つと考えております。
もちあげてもらっても、なんも出ないよ〜
今や、調べものしてて、しろまささんのサイトから自分で過去に書いたコードに当たるような体たらくなもんで^^;

No.1111 2021/01/26(Tue) 14:08:02

Re: 訃報 / stuncloud
> 1.インクリメント、デクリメント演算子
検討します!

いまのところ
n += 1
n -= 1
ならできるので多少面倒が減りました

やってみないとわかりませんが ++n は実装できても n++ は難しいかも…?

> 2.三項演算子
あります!!

ret = cond ? cons : alt

> 3. Class(Module) のインスタンス化
あります!!

moduleは本家と同等ですが、classは互換性を捨てインスタンスを作って使うようになってます
以下のような雰囲気でいけます

ins1 = MyClass(1)
ins2 = MyClass(2)

print ins1.GetValue() // 1
print ins2.GetValue() // 2
print MyClass(3).GetValue() // 3

No.1113 2021/01/26(Tue) 15:49:38

Re: 訃報 / とも
> > 1.インクリメント、デクリメント演算子
> 検討します!
>
> いまのところ
> n += 1
> n -= 1
> ならできるので多少面倒が減りました
>
> やってみないとわかりませんが ++n は実装できても n++ は難しいかも…?


フルスクラッチで開発されてると聞いたので、パーサーも一からですよね?
少し前にごくごく簡単な16進演算の簡単なパーサーを作ったのですが、それでも、頭を掻きむしりたくなってましたw
+=, -= だけでも十分なので、ペンディングにしてください。

> > 2.三項演算子
> あります!!
>
> ret = cond ? cons : alt


いいですね〜、これがあるだけでソースの可読性が飛躍的にアップします。


> > 3. Class(Module) のインスタンス化
> あります!!
>
> moduleは本家と同等ですが、classは互換性を捨てインスタンスを作って使うようになってます
> 以下のような雰囲気でいけます
>
> ins1 = MyClass(1)
> ins2 = MyClass(2)
>
> print ins1.GetValue() // 1
> print ins2.GetValue() // 2
> print MyClass(3).GetValue() // 3


まじですか?別言語になるようなリクエストなので、期待してなかったのです。
C++ ベースで育った私にはうれしい限り。
でも、これを聞いちゃうと、リクエストがどんどん派手な方向に・・・
オペレーターのおーb…
なんでもないです、残りのリクエストはプロジェクトの進捗追いかけきれた後に改めて〜

No.1121 2021/01/27(Wed) 10:31:24
GETKEYSTATEについておおしえください / nagaimo
度々すみません。

PDFを次々めくっていくプログラムをつくっているのですが
GETKEYSTATEだと連打をうけているのか開きたい次のページまで
ドンドンと開かれてしまいます。
連打を受け付けないといったプログラムはあるのでしょうか?


Dim KEY_DATA = GETKEYSTATE(VK_RIGHT)
IFB KEY_DATA = TRUE THEN
PRINT "次のCSV指定のファイル名のPDF開く作業開始,<キー操作>,RIGHT"
Const.STATUS = "NEXT"
ENDIF

No.1106 2021/01/22(Fri) 18:38:22

Re: GETKEYSTATEについておおしえください / nagaimo
すいません。単純にsleepいれたらかいけつしたみたいです解決したみたいです。。。
No.1107 2021/01/22(Fri) 19:06:09
ピクセルをセンチ / hixyoi
お世話になります。
画像60X60のピクセルが、何センチX何センチになるか、求めるためには、モニタのインチサイズが必要なようですが、モニタのインチサイズは、結局、手で測らないとだめなのでしょうか。
なにかしら、良い案がございましたらご教授ください。

No.1102 2021/01/21(Thu) 16:21:18

Re: ピクセルをセンチ / stuncloud
現在の表示のppiがわかれば求められそうな気もしますね
pixels per inchの略なので60ppiなら60x60は1インチx1インチということになります
…ただしWindows自体や画像を表示するソフトの表示倍率なんかとの兼ね合いもあるので、一筋縄ではいかなさそうです…

解決策の提示ができてなくて恐縮ですが、なぜモニタ上の表示の実寸が必要なのかに興味があり差し支えなければお教え願いますでしょうか

No.1103 2021/01/21(Thu) 20:22:17

Re: ピクセルをセンチ / hixyoi
宮大工の端くれ設計図を書き始めています、こちらのソフトでもムリなのでしょうか、ppiは、1960x1080です。
No.1104 2021/01/22(Fri) 08:19:39

Re: ピクセルをセンチ / stuncloud
例えばこんな手段があるようです (リンク先はdelphiですがUWSCでもできるはず)
http://mrxray.on.coocan.jp/Delphi/plSamples/020_DisplayResolution.htm#09

ただ、ここにも書いてあるように
> ディスプレイのサイズを mm (ミリメートル) 単位まで取得するサンプルです.
> 最初のコードは,画面のピクセル数と DPI (インチ当たりのピクセル数,PPI とも言う) から換算しています.結果として数ミリメートル以上の精度は望めないようです.モニタのサイズや種類によっては目安程度の値と考えた方が無難と思われます.
> 正確な値は,おそらく,モニタを実測するしかないでしょう.


そこまで正確な値は出せないと思います
ただし、出力するモニタが一つであれば、それに対応した調整を計算結果に対して施す、ということはできるかもしれません
いかんせん環境依存ですのでこればかりは個々でやってみないとわからないですね…

ので、ひとまず自分の環境でちょっとやってみました

-------------
def_dll CreateDCA(string, string, string, dword):dword:Gdi32.dll
def_dll GetDeviceCaps(dword, int):int:Gdi32.dll

mon = 0 // メインモニタ

dc = CreateDCA("DISPLAY", "\\.\DISPLAY" + (mon + 1), NULL, 0)
hsize = GetDeviceCaps(dc, 4) // HORZSIZE
vsize = GetDeviceCaps(dc, 6) // VERTSIZE

msgbox("画面サイズ<#CR>横:" + hsize + "mm<#CR>縦:" + vsize + "mm")

// 60x60の画像なら
w = 60
h = 60
mmw = w / monitor(mon, MON_WIDTH) * hsize
mmh = h / monitor(mon, MON_HEIGHT) * vsize

msgbox("横"+w+"pixel:" + round(mmw, -2) + "mm<#CR>縦"+h+"pixel:" + round(mmh, -2) + "mm")
-------------

先の記事をよく読むとGetDeviceCapsでHORZSIZEとVERTSIZEを取ると画面幅と高さがミリメートルで取れるようなのでそれを使いました
Windows 10なのでそこそこ正確な値が出ているようです (実際にメジャーで測ってみましたが合ってるようでした)
画面の実寸がわかれば、画像のピクセルと画面全体のピクセルの比率から画像の実寸も得られるという寸法です
ただし、リンク先にもあるようにOSによっては正しい値を返さない場合があることを留意しておいてください

No.1105 2021/01/22(Fri) 11:51:05
「UWSCでタスクトレイアイコンを表示する」について / たくろー
どこで聞いて良いのか分からなかったのですが、作者様がいますのでここで質問させてください。

「UWSCでタスクトレイアイコンを表示する (COM版)」で、
アイコン右クリックで終了させるのはどうしたらいいのですか?

procedure R()
 ans =msgbox("終了します",BTN_OK or BTN_CANCEL)
 if ans = 1 then exitexit
fend

だと終了はしますが、タスクトレイにアイコンが残ってしまいます。

procedure R()
 ans =msgbox("終了します",BTN_OK or BTN_CANCEL)
 if ans = 1
  TaskIcon.Dispose()
  exitexit
 endif
fend

だとTaskIconが定義されていない、と怒られてしまいます。

また本体の常駐プログラムでは sleep(3600) を使っていますので、
こちらで監視は出来ないです。

よろしくお願いします。

No.1096 2021/01/16(Sat) 16:53:11

Re: 「UWSCでタスクトレイアイコンを表示する」について / stuncloud
> また本体の常駐プログラムでは sleep(3600) を使っていますので、
> こちらで監視は出来ないです。

いやいや、そちらでしてください
3600秒経過、または終了フラグによってループを終えてDispose()してください
oleevent()で呼び出す関数が終了フラグを立てるようにします

try-finallyならexitexit後にfinally部って実行されるんでしたっけ?できるなら
try
 sleep(3600)
finally
 TaskIcon.Dispose()
endtry
でも良さそうですね

なお、件の記事に掲載しているコードはあくまでサンプルなので、あれを元に各々必要な機能を追加していただく想定です
なので自分の用途に合うよう改造して使ってもらうのが一番良い解決策です

No.1097 2021/01/16(Sat) 18:29:57

Re: 「UWSCでタスクトレイアイコンを表示する」について / たくろー
ご連絡有難うございます。

終了フラグをパブリックにして、右クリックの動作を
if msgbox("終了します",BTN_OK or BTN_CANCEL) = 1 then 終了フラグ = 1

本体を
while true

 //処理

 for i = 1 to 3600 //sleep(3600) の代わり
  if 終了フラグ = 1 then break 2 //本体のループ抜ける
  sleep(1)
 next

wend

TaskIcon.Dispose()

で対応しました。

No.1098 2021/01/16(Sat) 19:08:55

Re: 「UWSCでタスクトレイアイコンを表示する」について / しろまさ
3600秒の正確性は問わないのですねー。
No.1101 2021/01/18(Mon) 11:33:56
ラインカウントについておしえてください。 / nagaimo
エクセルで2行目までは表題がはいっており、A.Bの列は無駄な情報が入っています。
その情報からラインカウントを行いたいのですがさっぱりうまくいきません。
IDはF_EXISTSでTRUEと表示されるのですがCNTは1になります。
半日調べたのですがさっぱりわかりません。
CSVのラインカウントならすぐできたはずなのですが。。。
お助けいただけますようお願いいたします。


NoteID = GETID("メモ帳") //既に開いているメモ帳の ID を取得
o_XL = GETACTIVEOLEOBJ("Excel.Application") // エクセル オブジェクト
o_WB = o_XL.activeworkbook // ワークブック オブジェクト
o_WS = o_WB.Sheets("登録部品手配リスト") 
o_WS.activate
A="<#DBL>"+o_WB.Name+"<#DBL>"
ID = FOPEN(A, F_READ or F_WRITE)
CNT = FGET(ID,F_LINECOUNT,3) // 3列目の行数を取得したい
FCLOSE(ID)
//CNT=CNT-3//CNTを-3にする
FOR i=3 TO CNT//3行目からスタート
//抜き出したものをSENDSTRなどします。
NEXT

No.1089 2021/01/15(Fri) 19:11:43

Re: ラインカウントについておしえてください。 / Rayna
>>1089 nagaimo さん

・FOpenはテキストファイル等を読み書きするのに適しています
・CSVは中身がテキストなので FGet, FPut の機能で行列を解釈して読み書きする事が出来ます
・Excel系ファイル はテキストファイルではないのでFGet, FPutの機能を正常に使うことは出来ません

・o_XLから Cells(y, x).value 等で値を獲得しましょう
・この場合ForではなくWhileやRepeatで終端の値(例えばEMPTYとか)が出てくるまでループさせるのがいいかもです

No.1092 2021/01/16(Sat) 00:46:09

Re: ラインカウントについておしえてください。 / しろまさ
まずはこれ。
https://excel-ubara.com/excelvba1/EXCELVBA318.html

No.1095 2021/01/16(Sat) 09:28:06

Re: ラインカウントについておしえてください。 / nagaimo
しろまささんRAYNAさん
ご回答ありがとうございました。
CSVとエクセルは全く別物で考えないといけないんですね。。。
Cells(y, x).valueやVBAを調べなおします。

No.1099 2021/01/18(Mon) 09:52:39

Re: ラインカウントについておしえてください。 / しろまさ
csvファイルとはいえ、XLに関連付けられていればダブルクリックでXLとして開きます。
それは既にエクセルファイルです。

fopenで開けばテキストファイルとして扱えます。

ただそれだけの違いです。

No.1100 2021/01/18(Mon) 11:31:35
エクセルでおしえてください。 / nagaimo
簡単な質問で申し訳ございません。
エクセルでおしえてください。

質問内容
指定ワークシート名のワークシートをアクティブに変更したいです。

詳細
エクセルのファイル名称は都度変化するのですがワークシート名は固定と
なっているエクセルがあります。
ただワークシートが追加・削除されたりもするため下記のような番号振りは
出来ませんでした。
また同じエクセル内で複数のワークシートを順次開きたいです。
皆様にとっては簡単な質問かもしれませんが何卒よろしくお願いいたします。

EXCEL = GETACTIVEOLEOBJ("Excel.Application")
EXCEL.visible = True
FOR A = 1 TO Excel.activeworkbook.worksheets.count
PRINT Excel.activeworkbook.worksheets(A).name 
//ワークシート名全部とりました。
NEXT
ifb Excel.activeworkbook.worksheets(1).name="登録部品手配リスト"
//else時に隣のワークシートをアクティブに変更できません。。。

No.1081 2021/01/13(Wed) 18:51:02

Re: エクセルでおしえてください。 / しろまさ
// ワークシート オブジェクトを select 又は activate
 o_XL = GETACTIVEOLEOBJ("Excel.Application") // エクセル オブジェクト
 o_WB = o_XL.activeworkbook // ワークブック オブジェクト
 o_WS = o_WB.Sheets(1)    // ワークシート オブジェクト
//o_WS = o_WB.Sheets("Sheet2") // 名前指定でもよい
 o_WS.activate         // 理由 http://d.hatena.ne.jp/paz3/20090824/1251086123

// こちらも参考にどうぞ
http://siromasa.html.xdomain.jp/uwsc/u_term/ExcelApplication.html

No.1084 2021/01/14(Thu) 08:56:34

Re: エクセルでおしえてください。 / nagaimo
しろまささん
ご回答いただきありがとうございました。
ばっちりとアクティブのワークシートを選択することができました。

ついでと言ってはなんなのですが新たに困った内容がでてきました。

エクセルで下記のようになっていた場合
山田 太郎 15
山田 次郎 13

for y = 1 to 2
for x = 1 to 3
山田リスト =o_XL.ActiveSheet.Cells[y,x].value
SENDSTR(ID, 山田リスト)
print 山田リスト
next
next

printで吐き出すと下記のようになります。
山田
太郎
15
山田
次郎
13

ところがsendstrの吐き出したものは
山田太郎15山田次郎13
とつながって出てきます。
printと同じように出力するためになにかいい方法はございますでしょうか?

No.1085 2021/01/14(Thu) 17:47:47

Re: エクセルでおしえてください。 / しろまさ
SENDSTR(ID, の送り先は何ですか?
エクセル テキストエディタ その他アプリ
それぞれ適切な処理があると思いますが、
改行を入れたいだけであれば
SENDSTR(ID, 山田リスト+"<#cr>")
でしょうか。

No.1087 2021/01/15(Fri) 07:24:10

Re: エクセルでおしえてください。 / nagaimo
しろまささん
ご回答ありがとうございました。
<#cr>に"がぬけていたため<#cr>をいれてもエラーになっていただけでした。
くだらない質問で失礼いたしました。

No.1088 2021/01/15(Fri) 09:45:23
THREAD処理で刻々と変わる変数の値を取得したい / YMK
題材の件、並行処理で変わる変数の値を、本スレッドで取得するにはどうすれば良いのでしょうか

//パブリック変数にしたけど上手くいかない
PUBLIC a = 0
THREAD test(a)
for i = 1 to 30; print a ;sleep(0.2);next //i=6以上では「1」を返して欲しいところだけど
sleep(5)

PROCEDURE test(a)
sleep(1)
a = 1
FEND



//参照引数にしても上手くいかない
a = 0
THREAD test(a)
for i = 1 to 30; print a ;sleep(0.2);next //i=6以上では「1」を返して欲しいところだけど
sleep(5)

PROCEDURE test(var a)
sleep(1)
a = 1
FEND

No.1074 2021/01/12(Tue) 23:43:04

Re: THREAD処理で刻々と変わる変数の値を取得したい / YMK
済みません、PUBLIC宣言をしたのだから引数を渡す必要はありませんでした。

PUBLIC a = 0
THREAD test()
for i = 1 to 30; print a ;sleep(0.2);next //i=6以上では「1」を返した
sleep(5)
PROCEDURE test()
sleep(1)
a = 1
FEND

あまりPUBLICは使いたく無かったのですが、
参照引数では上手くいかないのですね、、

No.1076 2021/01/13(Wed) 05:12:30

Re: THREAD処理で刻々と変わる変数の値を取得したい / しゅん
// 自己解決されているようなので、お遊び的な参考情報を

// Public縛りするなら、一部のCOMオブジェクトがスレッド間参照可能なことを使います。

DIM i, a = CreateOleObj("VBScript.Regexp")
a.pattern = 0
THREAD test(a)
for i = 1 to 30; print a.pattern ;sleep(0.2);next
sleep(5)


PROCEDURE test(a)
sleep(1)
a.pattern = val(a.pattern) + 1
FEND

// patternは文字列なので、数値評価し直しが必要ですね、、、。



// 他はプロセスメモリーを参照するか
// asm.uwsは https://junjun777.hatenablog.com/entry/20120616/uwsc_function_pointer

CALL asm.uws
a = Asm.Alloc(4) // 4byte確保
Asm.SetDword(a, 0)
THREAD test2(a)
for i = 1 to 30; print Asm.GetDword(a) ;sleep(0.2);next
sleep(5)
Asm.Free(a) // 使い終わったらFreeが必要なのが面倒


PROCEDURE test2(a)
sleep(1)
Asm.SetDword(a, Asm.GetDword(a) + 1)
FEND

// VirtualAllocは4byteなんて少なく確保はしないですけどね、、、。
// 4byte指定でも4KBくらい確保したはず。

// 他にも方法はいろいろありますね。

No.1078 2021/01/13(Wed) 14:51:29

Re: THREAD処理で刻々と変わる変数の値を取得したい / YMK
しゅんさん
Publicにすることなく動作することを確認しました。
有難うございます。

ただ、説明を簡単にするために変数にしましたが、実際は配列なのです。
配列だとCOMオブジェクトでは出来ないですよね、、

DIM i, data[5,2000] = CreateOleObj("VBScript.Regexp")
data[0,0].pattern = 0
data[0,1].pattern = 10 //ここでCOMエラー


Asm.uws の方法は、ボリュームがあるので時間をかけて調べてみます。

No.1080 2021/01/13(Wed) 16:42:42

Re: THREAD処理で刻々と変わる変数の値を取得したい / stuncloud
やたらめったらpublicを使っているというのでなければ、publicでも良いと思いますよ
気になるならmoduleに入れておくとか?

thread M.test()
for i = 1 to 30; print M.a ;sleep(0.2);next
sleep(5)

module M
 public a = 0
 procedure test()
  sleep(1)
  a = 1
 fend
endmodule

No.1083 2021/01/14(Thu) 00:14:08

Re: THREAD処理で刻々と変わる変数の値を取得したい / satocha
しろまささんのサイトにある
http://siromasa.html.xdomain.jp/uwsc/u_sample/DLL/Class_SharedMemory.uws
をつかってみてはどうですか。
配列にも対応しています。

No.1086 2021/01/15(Fri) 01:44:29
Explorer について / Roppy
リストボックスの、あるファイルにフォーカスを当てる時
ファイル数が多くなり、ファイルがウィンドウの可視内に収まらなくなると
うまくいかなくなります。(ちなみに XPは、CLK_TREEVIEW で、できます)

p= "C:\UWSC"
f= "xxx.uws"

id= exec("Explorer.exe "+ p)
clkitem(id, f, CLK_LEFTCLK)

No.1071 2021/01/12(Tue) 06:42:22

Re: Explorer について / stuncloud
見えていないとクリックが成功しない、つまり
> clkitem(id, f, CLK_LEFTCLK)
がFalseを返すので、その場合はスクロールさせて再度clkitemを行う
それをTrueが返されるまで繰り返す
という処理にすると良いかと思います

スクロールはsetslider()を使う、page downを押す、などの方法があります

No.1072 2021/01/12(Tue) 10:41:51

Re: Explorer について / Rayna
>>1071 Roppy さん

// ・explorer は Exec しても 開いたウインドウが id として獲得できない場合があります
// ・操作によってはOS毎に方法を変える必要性があります(UIの操作は特に)

// XP -> Vista で新しいデスクトップの描写システムが追加され(DWM, Aeroとか)
// 7 -> 8 はそこまでUWSCの挙動は変わらないですが DWM が強制されたりと仕様が変わっているので厳密なことをする場合は注意が必要です
// 8.1 -> 10 はUIが一新されたので 同じスクリプトでも動作の違いが顕著になります

// 体感ですが | を 設計や仕様変更を考慮する壁 だとすると
//  2000, XP || Vista, 7 | 8, 8.1 || 10
// こんなかんじだと思います

/////////////////////////////////
// UWSC(Free版) のディレクトリから explorer を使って Readme.txt を開くスクリプト

Dim f = "Readme.txt"
Dim p, id

Select KindOfOs()
Case 13 // Windows XP // Test OSBuild:2600
 p = Trim(DosCmd("Echo %UserProfile%\デスクトップ\UWSCF\5.302"))
 id = Exec("Explorer.exe <#DBL>" + p + "<#DBL>") // -1 // ID取れてない
 id = GetId(GET_ACTIVE_WIN) // とりあえず↑で開かれたアクティブウインドウから獲得

 Print ClkItem(id, f, CLK_LISTVIEW) // True
Case 30 // Windows 10 // Test OSBuild:19042
 p = "C:\Program File\UWSCF"
//id = Exec("Explorer.exe <#DBL>" + p + "<#DBL>") // IDは取れているけどExecで開いたウインドウではない
 // ファイル見えてない問題を解決するために explorer の /select オプションを使ってみる
 id = Exec("Explorer.exe /select,<#DBL>" + p + "\" + f + "<#DBL>") // -1 // ID取れてない
 id = GetId(GET_ACTIVE_WIN) // とりあえず↑で開かれたアクティブウインドウから獲得

 Print ClkItem(id, f, CLK_LIST Or CLK_DBLCLK) // True
SelEnd
/////////////////////////////////

// 蛇足
http://codepad.org/tXBtFz7b

No.1073 2021/01/12(Tue) 13:18:35

Re: Explorer について / Roppy
stuncloudさん、ありがとうございます。参考になりました。

Raynaさん、ありがとうございます。早速、やってみます。助かりました。

No.1075 2021/01/13(Wed) 00:07:48

Re: Explorer について / Roppy
岩ずでもがなな事ども

stuncloudさん、Windows を使うことは、将にそういうことを、したいが為ですね。

Raynaさん、
Windows のヴァージョンアップの度に襲われるこの迷惑感。
未だに、XP や 7 を使わねばならぬ、あれやこれ、溜息がでます。
今回は、10 で動作させねばならなくなり、「見える化」を維持したいがため、この仕儀となりました。
Explorer は、なかなかハードルが高いです。
当面は、どのファイルが、いかなる処理をされるかを、MSGBOX 等で確認させる事で対応します。そして、別のファイラーも選択肢として、粘ってみます。

UWSC がこの世に無かったら、私は、Windows を使っていないでしょう。
umiumi さんに、最大のリスペクトを。

No.1077 2021/01/13(Wed) 07:11:34

Re: Explorer について / stuncloud
ファイル操作だけならExplorerを操作するよりも
・doscmd()またはpowershell()でファイル操作系コマンド
・COM(Shell.ApplicationやScripting.FileSystemObjectなど)
を使って裏で片付けちゃうのが楽なんですよねえ
というよりExplorerのGUI操作がキツすぎる、というわけなんですが
やってる操作はprint窓に出力するようにすれば視覚的なものもなんとかなるかな、という気はします
ファイルコピーや移動の際にダイアログを出すオプションがShell.Applicationにあるので、それを駆使するというのもアリでしょう (僕もこれはよく使います)

No.1079 2021/01/13(Wed) 15:39:41

Re: Explorer について / Roppy
stuncloudさん、ありがとうございます。

>>ファイルコピーや移動の際にダイアログを出すオプションがShell.Applicationにあるので、それを駆使するというのもアリでしょう

これ、いただきます。

No.1082 2021/01/13(Wed) 19:00:58
SENDSTRについて教えてください / 藍
いつもお世話になります。

webシステムで支店コードのところに代入しようとしています。
SENDSTR(id, "123456", 7, True)の番号7の部分なのですが、
機種??によって「8」になったりします。

windows10 64ビット、ie11を利用

同一の環境で実行しているつもりですがこのような事象が発生します。
なぜなのか理由がわかりません。ご存じの方がいましたら教えてください。
よろしくお願いいたします。

No.1068 2021/01/05(Tue) 18:10:46

Re: SENDSTRについて教えてください / stuncloud
> webシステムで
ということは何かしらのブラウザだったりするのでしょうか
環境によってエディットボックスの数が異なるのだと思われます
例えば、一方はアドレスバーのみだがもう一方はアドレスバーと検索バーがある、など
この場合検索バーが増えた分、sendstrの番号指定が一つずれるという具合です

対処法として思いつくのは

・いずれの環境でもウィンドウの状態を揃えるようにする

ですがそれが難しい場合、あるいは原因ではなかった場合は

・入力先に初期値があるならgetstr(id, 7)して比較
  その場所に入力して良いならそのまま7にsendstr
  だめなら8にsendstr
  (きちんとするならgetstr(id, 8)も調べる)

といった感じで入力できる場所を適宜探すのが良いと思います

No.1069 2021/01/06(Wed) 10:40:18

Re: SENDSTRについて教えてください / 藍
stuncloud様 返信ありがとうございます。
ブラウザーはie11を利用しています。
PCは複数台ありウィンドウの状態を揃えのは難しいため
アドバイス通り入力できる場所を適宜探す方法で対処しました。
ありがとうございました。

No.1070 2021/01/06(Wed) 16:46:05
ネットストックハイスピードに証券番号が自動入力できない / nanashi
お疲れ様です。
windows10 64bit環境で下記ブログにあるように松井証券のネットストックハイスピードのチャートを自動で保存しようとしているのですが、code入力の部分がうまく動きませんでした。
"ComboBox"でなくて"Edit"でないかなとか、o_HNDそのものを使って書き換えられないかなとか、マウス右クリックでペースト出来ないかなどもろもろ試したのですがうまくいきませんでした。
もし入力が成功する人がいましたら、やり方を教えてほしいです。
よろしくお願いいたしますmm

元サイト:http://www.m-trader.net/chart_funasi2
code入力の部分
```
//銘柄のCode入力処理開始。
w_ID = GetID(windowTitle)
o_HND = GetCtlHND(w_ID, "ComboBox")
o_ID = HNDtoID(o_HND)
CTRLWIN(w_ID, ACTIVATE)
SENDSTR(o_ID, code, 1, True)
KBD(VK_RETURN)
//銘柄のCode入力処理終了
```

No.1067 2020/12/28(Mon) 00:12:36

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

- HOME - お知らせ(3/8) - 記事検索 - 携帯用URL - フィード - ヘルプ - メール - 環境設定 -

- Skin: Modern v2.0 - Author: ロケットBBS -

Rocket Board Type-X (Free) Rocket BBS