[ 掲示板に戻る ]

過去ログ閲覧モード

テキストを開かずに印刷 / sen
テキストを開かずに印刷はできませんでしょうか?
下記のような感じでやっていますが、時々、印刷する時に引っかかります。
DOSCMDをみていると、書き込みは、echoと> >>でやれそうです。
xlsは、右クリックで開かずに印刷できます。
txtはなんか方法ありませんでしょうか?


exec("notepad")
メモ =getid("メモ帳")
SENDSTR(メモ,データ)
SLEEP(0.2)
KBD(VK_ENTER)
SCKEY(メモ,VK_CTRL,P)
SLEEP(0.5)
KBD(VK_ENTER)
SLEEP(0.3)
CTRLWIN(メモ, CLOSE)
id = GETID("メモ帳", "#32770", -1)
SLEEP(0.3)
CLKITEM(id, "保存しない(N)", CLK_BTN)
SLEEP(0.1)

No.1031 2015/03/24(Tue) 00:32:44

Re: テキストを開かずに印刷 / しろまさ
// 開かれますけどね。

Run_Context("C:\test.txt","印刷(&P)")
Procedure  Run_Context(aPath, aCmd)
  dir = Copy(aPath, 1, Pos("\", aPath, -1))
  nm = Copy(aPath, Pos("\", aPath, -1) + 1)
  sh = CreateOleObj("Shell.Application")
  fol = sh.NameSpace(dir)
  fil = fol.Items.Item(nm)
  For i = 0  To fil.Verbs.Count - 1
    If  Pos(aCmd, fil.Verbs.Item(i).name) > 0  Then fil.Verbs.Item(i).DoIt
  Next
FEnd

// 即興で書いたけど前に書いてた・・・ http://siromasa.digi2.jp/uwsc/u_term/72_MigiClickMenu.html

No.1033 2015/03/24(Tue) 10:09:39

Re: テキストを開かずに印刷 / sen
ありがとうございます。
やってみます。

No.1052 2015/03/27(Fri) 00:04:10
FUKIDASIが欠ける / MOGU
いつもありがとうございます。Win7HP 64Bit環境にてUWSCPro503.exe-最新までのPro版で下記のスプリクトを実行すると10秒後位から文字が欠ける現象が発生します。uwscpro502.exeでは何ともありません。どうぞよろしくお願い致します。

// -----
CT=0

WHILE TRUE

CT=CT+1

IFB (CT MOD 3)=0 THEN
THREAD FUKI1()
SLEEP(1)
ENDIF

IFB (CT MOD 5)=0 THEN
THREAD FUKI2()
SLEEP(0.5)
ENDIF

SLEEP(0.1)

WEND

PROCEDURE FUKI1() //
FUKIDASI("SAMPLE1234567890", 100,100, 0, 12,,$0000FF,,-2)
SLEEP(1)
FEND

PROCEDURE FUKI2() //
FUKIDASI("ABCDE", 100,150, 0, 8,,,$00FF00)
SLEEP(2)
FEND

No.1047 2015/03/25(Wed) 09:42:29

Re: FUKIDASIが欠ける / umiumi
確認しました。
対処します。

No.1050 2015/03/25(Wed) 23:18:47
Win7 64bitPCで Itm_ListView の代替 / えあり
現在UWSCをWin7、Win8で使用していますが、
Win7以降、64bitPCでリストビューが取得できなくなってしまっており支障をきたしています

ACC以外の方法でどうにかして一覧の取得、クリックを行いたいのですが
APIを利用して何とかできないものか相談させてください

理屈では SendMessageA で取得できるようなのですが
UWSCでは直接構造体が渡せない、分解して渡してもうまく動かない
VOIDマクロはDLL関数としては定義できない、と困っております。

APIに精通している方、お知恵を貸していただけませんでしょうか

--------------------------------------------------------
DEF_DLL SendMessageA(HWND, UINT, Long, var Long) :Long :user32.DLL

CONST LVM_GETITEMCOUNT = $1004
CONST LVM_DELETEITEM = $1008
CONST LVM_GETITEMTEXTA = $1045

WinID = GetID("のプロパティ","#32770")
B_HNDL = GETCTLHND(WinID, "SysListView32", 0)

// この関数はOK。ちゃんと個数が返ってくる
BCnt = SendMessageA(B_HNDL, LVM_GETITEMCOUNT, 0, 0)
// リスト項目が消えるけど役に立たないよ…
BHDL = SendMessageA(B_HNDL, LVM_DELETEITEM, 0, 0)


// 構造体 LVITEM が引き渡せない、というより作成できない?
// DEF_DLL SendMessageA(HWND, UINT, Long, var Long) :Long :user32.DLL
// SendMessageA(B_HNDL, LVM_GETITEMTEXTA, 0, LVITEM)

// メモリを破壊してExplorerがぶっ壊れる
// DEF_DLL SendMessageA(HWND, UINT, Long, UINT, Long, Long, UINT, UINT, var Long, Long) :Long :user32.DLL
// SendMessageA(B_HNDL, LVM_GETITEMTEXTA, 0, $0001, 0, $0000, -1, Buff, $FF)

// ListView_GetItemText 関数がVOIDマクロなのでだめ。定義できない
// DEF_DLL ListView_GetItemText(HWND, Int, Int, var String, Int)::user32.dll
// ListView_GetItemText(B_HNDL, 1, 0, Buff, $FF)

// LVITEMの構造体
TEXTBLOCK LVITEM
{
mask: ['UINT']
iItem: ['int']
iSubItem: ['int']
state: ['UINT']
stateMask: ['UINT']
pszText: ['LPTSTR']
cchTextMax: ['int']
iImage: ['int']
lParam: ['LPARAM']
iIndent: ['int']
iGroupId: ['int']
cColumns: ['UINT']
puColumns: ['UINT']
piColFmt: ['int']
iGroup: ['int']
}
ENDTEXTBLOCK
--------------------------------------------------------

やりたいこと

@ネットワーク接続のアイコン(ncpa.cpl)を確実に取得したい
 (ACC指定だとウインドウが小さかったり画面外だった場合にすべて取得・クリックできない)
 (接続先が大量に追加されているPCでは目的のアダプタがどこにあるのか判断できない)

Aネットワークアダプタのプロパティ画面で「TCP/IPv4」をセレクトしてプロパティを開きたい
 (これもACC指定だとプロトコルが大量に追加されているPCだとリストの場所が確定できない)
 (リスト外、画面外にあってクリックに失敗していてもACC指定では
   戻り値がすべて成功になっており、確実な動作を期待できない)

UWSC本体側の対応(ITM_ListViewの復活)はできないのでしょうか?
合わせてよろしくお願いします

No.1032 2015/03/24(Tue) 02:51:17

Re: Win7 64bitPCで Itm_ListView の代替 / stuncloud
ヘルプより
> 構造体:型を { } にて展開して書く    関数名( double, {int, int, int} ) 

LVM_GETITEMTEXTでぐぐったら茨の道が垣間見えたのであまりやりたくない感じですねぇ…
僕ならdoscmdでnetshを検討します

No.1035 2015/03/24(Tue) 11:43:40

Re: Win7 64bitPCで Itm_ListView の代替 / えあり
Netshでサポートされていない、PoweShellでもできない、WMIコントロールでも変更不能
レジストリ操作でもバイナリのために参照出来ない値を変更するために、
どうしてもプロパティからGUI操作が必要なのです

よろしくお願いします

-----------------------
DEF_DLL SendMessageA(HWND, UINT, Long, var DWORD[]) :Long :user32.DLL
Dim LSTVEW[99]
SendMessageA(B_HNDL, LVM_GETITEMTEXTW, 0, LSTVEW)
-----------------------
配列リストで送ってみた場合、動作はするようですがやはり取得できませんでした

C++のサイト等で見てみると
バーチャルメモリ空間を作ってそこへコピーして参照する方法等もあるようで
UWSCでも内部的な処理でうまいこと出来そうなのですが・・・

No.1036 2015/03/24(Tue) 13:14:15

Re: Win7 64bitPCで Itm_ListView の代替 / stuncloud
> Netshでサポートされていない、PoweShellでもできない、WMIコントロールでも変更不能
> レジストリ操作でもバイナリのために参照出来ない値を変更するために、
> どうしてもプロパティからGUI操作が必要なのです

なるほど、そういうことでしたか…
ちなみに具体的には何を設定するのでしょうか

> @ネットワーク接続のアイコン(ncpa.cpl)を確実に取得したい
>  (ACC指定だとウインドウが小さかったり画面外だった場合にすべて取得・クリックできない)

・ウィンドウサイズが小さい場合は十分に大きくする
・画面外だった場合は画面内に移動させる
・それでも表示しきれない部分でクリックに失敗する場合は、スクロール後に再クリックという動作を目的のダイアログが表示されるまで繰り返す
といった対処を入れたらどうでしょう

> Aネットワークアダプタのプロパティ画面で「TCP/IPv4」をセレクトしてプロパティを開きたい
>  (これもACC指定だとプロトコルが大量に追加されているPCだとリストの場所が確定できない)
>  (リスト外、画面外にあってクリックに失敗していてもACC指定では
>    戻り値がすべて成功になっており、確実な動作を期待できない)

こちらもスクロールを併用してクリック後に対象のプロパティダイアログが表示されるまで繰り返す、で対処出来ないでしょうか

> バーチャルメモリ空間を作ってそこへコピーして参照する方法
過去にそういうモジュールを作っていたので久しぶりに引っ張りだして使ってみたんですがうまく行きませんでした
https://stuncloud.wordpress.com/2012/08/10/uwsc_module_structures/
ぐぐったらx64アプリ相手だとポインタのサイズが変わるんだよ、という話を見つけたのでそういうことだったのかもしれません、longlongで対応出来るのかな

あと、実は32bitのexplorerだったらlistview系の操作が出来るのではないか?と仮定して32bitのexplorerを起動してみたかったんですけど、どうやら7のx64だと無理みたいですね

No.1038 2015/03/24(Tue) 18:03:46

Re: Win7 64bitPCで Itm_ListView の代替 / えあり
>stuncloud 様

何度もありがとうございます。

実際にやりたいことは
@すべてのアダプタでネットワーク接続のプロトコル欄にあるチェックボックスをOFFにしたい
 (ACC指定だと戻値が期待できないので成功判定があいまい)
Aこの接続のアドレスをDNSに登録するをOFFにしたい
 (これは新たにウインドウが出る上にボタンなので、プロトコルさえ選択できればできる)


@がHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network にある KEY:Config に
バイナリデータとして格納されています。これが読み解けません。
この要件を満たすためには確実にネットワークアダプタアイコンを把握して
プロトコルをクリックしなければなりません

ACC指定の場合ネットワークアダプタアイコン「名」がネックとなり、
画面からはみ出したり画面外にあった場合、最前面指定の駐在ソフトがあった場合に
意図した動作が期待できないので
Clk_LstViewができないのならばGETITEMTEXTWで選択した状態にしたいということでした。
(選択さえできればVK_Appsを投げるだけでプロパティが開く)


ListView to CVS ttp://www.inasoft.org/lv2csv/
というツールを作っている作者が実際にListViewを抜きだすツールとソースコードを出しているので
絶対にできるはずなのですが、UWSCに変換する技術が私にはまだまだ足りないようで悔しくてなりません。


引き続き情報を募集しますのでよろしくお願いいたします。

No.1039 2015/03/24(Tue) 19:10:17

Re: Win7 64bitPCで Itm_ListView の代替 / umiumi
>UWSC本体側の対応(ITM_ListViewの復活)はできないのでしょうか?
確認しました。
対処します。

No.1041 2015/03/24(Tue) 22:16:48

Re: Win7 64bitPCで Itm_ListView の代替 / stuncloud
結局UI操作からは離れるんですが、それぞれ解決法はありそうでした

> @すべてのアダプタでネットワーク接続のプロトコル欄にあるチェックボックスをOFFにしたい
nvspbindというのがあるようです、これでチェックのオンオフがコマンドで出来そうですよ
https://social.technet.microsoft.com/Forums/ja-JP/10837aad-7a8c-4761-82a6-8864709c7104/-?forum=w7itprogeneralja
ここでダウンロード出来ます
https://gallery.technet.microsoft.com/Hyper-V-Network-VSP-Bind-cf937850
exe単品のようなのでuwsファイルとセットで使う感じで

> Aこの接続のアドレスをDNSに登録するをOFFにしたい
こちらはnetshで出来るみたいですね

No.1043 2015/03/24(Tue) 23:27:12

Re: Win7 64bitPCで Itm_ListView の代替 / えあり
>umiumi 様

>確認しました。
>対処します。


対処ありがとうございます。
よろしくお願いします。

ついでに言うとツリービューもダメです

リストのチェックボックス付拡張スタイルにて
APIからだとそのチェック状態も取得できるようなので
CHKBTN に一つ機能追加していただけると更に助かります


>stuncloud 様

重ね重ね、何度もありがとうございます。

>nvspbindというのがあるようです

こんなものが出たのですね・・・
netshコマンドもWin10以降ではサポート外になるオプションがあるようで
今後OS標準搭載になっていく流れなのでしょうか

ただ、残念なことに許可アプリ以外は動かせないルールがありまして
非常に歯がゆいですがこの方法は今回は利用できません
UWSCか、OS標準構成での実現を考えております

No.1045 2015/03/25(Wed) 00:49:21

Re: Win7 64bitPCで Itm_ListView の代替 / しゅん
私のStructモジュールを使われているようなので、私もやってみましたが、、、上手くいきません。
(Structモジュールは、UINTはDWORDとかLPARAMはintとかにしないと、そもそもダメですが、それを直してもダメ)

んで苦闘してたのですが、わかりました。
SendMessageのLPARAM、多分そのまま渡ってます。(まー、それもそうか)
何がまずいかと言うと、LPARAMのポインターは、UWSCのメモリーです。
がListView側で期待するのは、ListView側で書けるメモリーです。

ということで、x86空間にいるUWSCには、x64のリストビューには厳密には手出しができません。
(が、まあ、レアケースでListView側が落ちるのを許容するなら、なんとかなります)

メモリー空間を意識しながら取得するアプリケーションを書いたところ、
・x86アプリがx86ListViewを読む
・x86アプリがx64ListViewを読む(リスクあり)
・x64アプリがx86ListViewを読む(こっちは安全)
・x64アプリがx64ListViewを読む
の組み合わせで可能なことを確認しました。
一応、x86版はUWSCのスクリプトに直せると思います。


ただ、、、これ、厳密には危険行為なので、公開の掲示板に書きたくありません。(すみません)
ここまでのヒントで頑張れるなら頑張って、そうでなければumiumiさんの修正を気長に待つかしてください。
また、チェックの状態はCHKIMGやPEEKCOLOR等で判別する方法もあるとは思います。

No.1048 2015/03/25(Wed) 21:52:37
Win7でスリープからの復帰 / はむすた
Win7で使用しておりスケジュールのスリープから復帰がたまにしかできません。電源オプションの”スリープ解除タイマーの許可”設定は有効になっていました。5回に1回くらい復帰して実行することもあります。解決方法分かるかたいたらよろしくお願いします。
No.1046 2015/03/25(Wed) 07:47:35
EXEタイプの引数と、時間指定で処理&インターバルについて / かず
はじめまして、
購入検討中でして、それで、質問が御座います。


下記の内容が可能かどうか教えていただけますでしょうか?

exe作成のアプリで、数値の引数(秒数)を1つ渡して、
あるアプリを起動して、その引数・秒数後に、アプリを閉じたいと考えてます。
ただしアプリを閉じる時間の間の、5秒単位で、そのアプリ最前面表示させたいです。

このようなことは可能でしょうか?

最前面表示に関しては、ウィンドウのサイズ設定で行うかなと考えてます。。。

どうか宜しくお願いいたします

まず、引数のところでつまずいてます。それと秒数後の処理とその期間の間のインターバル処理をどうすればよいのか、教えていただけると、大変助かります

すみません

No.1037 2015/03/24(Tue) 16:01:43

Re: EXEタイプの引数と、時間指定で処理&インターバルについて / routa
こんな感じでしょうか。
sec = PARAM_STR[0]
id = exec("c:\hoge.exe")
for i = 1 to sec/5
 ctrlwin(id, ACTIVATE)
 sleep(5)
next
ctrlwin(id, CLOSE)

No.1040 2015/03/24(Tue) 22:07:00

Re: EXEタイプの引数と、時間指定で処理&インターバルについて / かず
ありがとうございます。

いただいたサンプルをお手本にテストさせていただきます

m(_ _)m

No.1042 2015/03/24(Tue) 22:51:36
仮想化した画面をUWSCに監視させたいです。 / ユウ
仮想化した画面をUWSCに監視させたいです。

一つ考えたのですが、1つのモニターをデュアルディスプレイのように使うことはできるでしょうか。
1つ目の画面を仮想化しデュアルディスプレイのように認識させ、UWSCに監視させたいです。
もう1つの画面で別の作業をしようと考えてます。

サブ画面で監視や実行をさせたいので、最小化してしまうような仮想デスクトップでは駄目でした。

MOUSEROGは監視させたいソフトでは使えませんでした。


仮想マシンを作れば可能かと思いますが、監視させたいソフトが仮想マシンのドライバに対応していませんでした。
メモリを分割したりとPCに負担もかかるので別の方法を探しています。

どなたかご教授いただけないでしょうか。
よろしくお願いいたします。

No.1030 2015/03/23(Mon) 18:47:42
surface pro 3 での動作について / shadow
windows8.1です。

uwscで記録は出来るのですが、記録した通りの動きをしてくれません。
必ず少し右下からの動作になり、ズレが生じてしまいます。

わかる方居りましたらよろしくお願いいたします。

No.997 2015/03/13(Fri) 17:25:07

Re: surface pro 3 での動作について / shadow
すみません。
ブラウザはクロームです。

No.998 2015/03/13(Fri) 17:28:16

Re: surface pro 3 での動作について / しゅん
surface pro 2ですが、再現しました。
マウスを四隅あたりに動かすだけのものを低レベル記録し、再生したところ、期待した動きになりません。
Windows8.1で高DPI時の挙動が変わったせいと思われます。
http://ascii.jp/elem/000/000/905/905248/

100%、すなわち最小の設定ですと、期待通りになりますので、とりあえずそれで行うか、移動先やクリック先をDPIのパーセンテージを考慮して修正すればよいと思います。

No.1024 2015/03/20(Fri) 22:16:46

Re: surface pro 3 での動作について / umiumi
確認しました。
修正します。

No.1029 2015/03/21(Sat) 19:21:55
csvをhtmlで表示 / sen
csvをhtmlで表示したいのですが、このようなものはuwscで作成可能でしょうか?
No.1018 2015/03/20(Fri) 00:20:37

Re: csvをhtmlで表示 / stuncloud
質問の意図がわかりません
ですが作成可能かどうかでいえば、可能です
どちらもテキストファイルなので単純に文字列の加工をするだけだからです

csv = fopen("hoge.csv", F_READ)
html = fopen("hoge_csv.html", F_WRITE)
fput(html, "<html><head><title>hoge.csv</title></head><body><pre><code>")
fput(html, fget(csv, F_ALLTEXT))
fput(html, "</code></pre></body></html>")
fclose(html)
doscmd("hoge_csv.html")

No.1022 2015/03/20(Fri) 19:09:41

Re: csvをhtmlで表示 / sen
済みません。
皆目見当がつかなくて、思い切って聞いてしまいました。
お蔭様で、表示できました。
フリーソフトを探してみたり、有料のソフトを購入してみたりもしたのですが、
悩んでいたのが嘘のようです。
uwscで良かったのか、という感じです。
ありがとうございました。

参考のソースも参考にさせていただきました。
http://park14.wakwak.com/~simizu/cgi-bin/uwscbbs2/cocoqa.cgi?log=84

dim ファイル名 = "元.csv"
変換(ファイル名)
doscmd(replace(ファイル名,"csv","html"))

PROCEDURE 変換(ファイル名)
id = fopen(ファイル名, F_READ)
  データ ="<table border=3 cellspacing=0 style=font-size:16pt><#cr>"
  for i=1 to fget(id,F_LINECOUNT)
    x =betweenstr("<#cr>"+fget(id, F_ALLTEXT)+"<#cr>","<#cr>","<#cr>",i,1)
    データ =データ+"<tr align=right"+"><td>"+replace(x,",","<td>")+"<#cr>"
  next
  データ=replace(データ,"right><td>会社名","center bgcolor=#ccccff><td>日時")
  データ=データ+"</table>"
  id = fopen(replace(ファイル名,"csv","html"),F_WRITE)
    fput(id,データ)
  fclose(id)
fend

// 元.csv
// 会社名,ユーザー名,日にち
// 会社@,高田,3月20日
// 会社A,川原,3月21日
// 会社B,高崎,3月22日

No.1028 2015/03/21(Sat) 11:50:14
文字列の計算 / おと
STR = "2,-1,0"
のような文字列があるのですが、答え1と出るように
計算したいです・・・
どうすれば、可能でしょう?

No.1025 2015/03/21(Sat) 01:21:25

Re: 文字列の計算 / Liners
// UWSCには便利な配列関数があります。
STR = "2,-1,0"
A = split(STR, ",", TRUE, TRUE)
msgbox(CALCARRAY(A, CALC_ADD))

No.1026 2015/03/21(Sat) 01:49:18

Re: 文字列の計算 / おと
Linersさん

目的が達成できました。

月曜日から、少し業務が楽になります。
助かりました。

No.1027 2015/03/21(Sat) 08:00:41
MOUSEORG で使う 文字列の取得方法 / リック

例えばFIREFOXでMOUSEORG関数を使う場合以下のようになると思います。

別のウィンドウで この MozillaWindowClass の部分を取得したいのですが、どうすればよいでしょうか。 

id=GETID(GET_ACTIVE_WIN)
hwnd = GETCTLHND(id,"MozillaWindowClass")

MOUSEORG(id,2,MORG_BACK)

No.1017 2015/03/19(Thu) 19:37:47

Re: MOUSEORG で使う 文字列の取得方法 / リック
id=GETID(GET_ACTIVE_WIN)
hwnd = GETCTLHND(id,"MozillaWindowClass")

MOUSEORG(id,2,MORG_BACK) ×
MOUSEORG(hwnd,2,MORG_BACK) ○

すみません。例文の表示を間違えました。
正しくはこちらになります。

No.1019 2015/03/20(Fri) 04:35:01

Re: MOUSEORG で使う 文字列の取得方法 / stuncloud
parent = getid("対象ウィンドウ")
// 対象ウィンドウの子ウィンドウをクラス名で列挙
for child in getallwin(parent)
 print status(child, ST_CLASS)
next

これで表示されるもののうちのいずれかがご希望のクラス名である可能性があります
特定方法はあなたが必要とされるものによりますから、僕からはお答え出来ないと思います
そこはご自分で調べて下さい

No.1021 2015/03/20(Fri) 18:50:45

Re: MOUSEORG で使う 文字列の取得方法 / リック
ありがとうございます。
CHROMEで試したところ正常に取得できたようにと思います。

しかし、genymotionというソフトで試したところ、
同じクラス名が10個以上取得されました。
こういった場合はどう指定すればよいのでしょうか。

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

No.1023 2015/03/20(Fri) 20:01:34
全1150件 [ ページ : << 1 ... 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 ... 115 >> ]