[ 掲示板に戻る ]

過去ログ閲覧モード

常に手前 / 高知 森田
いつも、お世話になります。
option explicit

DIM KEKKA
DIM 常に前面
DIM x
DIM ID
DIM moji

While true

KEKKA = SLCTBOX(SLCT_BTN, 0,1500,350, "常に前面?", "TOPMOST","ハンドル","終了")

SELECT KEKKA

CASE SLCT_1
常に前面= "TOPMOST"

ID = HNDTOID( GETSTR(0) )
CTRLWIN( ID , TOPMOST)
CTRLWIN( ID , NOTOPMOST)
CTRLWIN( ID, MAX )


CASE SLCT_2
常に前面= "ハンドル"

While True
id = GETID(GET_FROMPOINT_WIN) // マウスカーソル下のウィンドウ
if id = GETID(GET_FUKIDASI_WIN) then Continue // 吹き出し自体は無視

moji = "X座標 " + STATUS(id, ST_X) + " " + "Y座標 " + STATUS(id, ST_Y) + " " _
+ " 幅 " +STATUS(ID,ST_WIDTH) + " " + "高さ " + STATUS(ID,ST_HEIGHT) _
+ " " + STATUS(id, ST_TITLE) + " , " + STATUS(id, ST_CLASS) + " " + "ハンドル " + IDTOHND( ID )

// FUKIDASI(moji, G_MOUSE_X+8, G_MOUSE_Y, 3)

if GetKeyState(VK_SHIFT) then SendStr(0, IDTOHND( ID ) )

If GetKeyState(VK_SHIFT) Then Break


Sleep(0.1)

Wend

CASE SLCT_3
常に前面= "終了"

EXITEXIT
SELEND


Wend

FUKIDASIが、消えません
よろしくお願いします。

No.2896 2016/09/19(Mon) 07:41:08

Re: 常に手前 / まるぱ
ヘルプには
BALLOON() // 引数無しにて吹出し消去
とありますよ

No.2897 2016/09/19(Mon) 08:52:05

Re: 常に手前 / 俄プログラマー
If GetKeyState(VK_SHIFT) Then
FUKIDASI("")
Break
endif

文字無しを吹き出す事で消えます。
次回からの質問はどの動作の時にどうならないのか書いていただけると助かります。

No.2898 2016/09/19(Mon) 08:58:31
セレクトボックスのイベント / abs
試行錯誤しましたが、なかなか上手くいかないので質問させていただきます。

<select class="select-default">
<option value="">---</option>
<option value="1">aaa</option>
<option value="2">bbb</option>
.....
</select>

このようなセレクトボックスがあり、option.value=1などでデータの選択は可能です。
データを選択したときに二つ目のセレクトボックスが出てくるのですが、そのイベントが発生しません。
onClickなどがあれば、直接イベントを発生させることができると思うのですが、このような場合はどのようにイベントを発生させればよいのでしょうか?

あまり詳しくないのですが、開発者ツールのほうで、
<select class="select-default">の部分を選択し、イベントタブを確認すると、
invalid:
m.dispatchEventと書かれていましたので、このイベントが呼び出されているのではないかと思います。
別のjsファイルの中の関数がセレクトボックスの中身を変更した際に呼び出されているようなのですが、もしお分かりになるかたいらっしゃいましたらご教授お願いいたします。

No.2883 2016/09/18(Sun) 00:05:57

Re: セレクトボックスのイベント / 俄プログラマー
二つ目のセレクトボックスが出ている状態になったら
その対象のウインドウにある全オブジェクトの種別や現在の値などを
根こそぎ取得してみてはいかがでしょう?
特定が出来ればそのオブジェクトが出てくるまで待たせれば良いのではないでしょうか?
オブジェクトの取得についてわからなければサンプルページに参考になる物が書かれています。

No.2886 2016/09/18(Sun) 11:51:42

Re: セレクトボックスのイベント / abs
ありがとうございます。
二つ目のセレクトボックスはマウスでクリックして選択した場合は出現しますが、
値を書き換えるだけでは出現しない状態です。

オブジェクトの取得もやってみましたが、セレクトボックス選択後の読み込み待ちはそのオブジェクトがあるかどうかで判断することはできそうですが、それだけではイベントが発生せずオブジェクト自体が出現しませんので、止まってしまいます。

No.2891 2016/09/18(Sun) 13:57:01

Re: セレクトボックスのイベント / 俄プログラマー
>二つ目のセレクトボックスはマウスでクリックして選択した場合は出現しますが、
>値を書き換えるだけでは出現しない状態です。

セレクトボックス出現のきっかけがマウスクリックに限られているから
値を書き換えても出ないんですね。
CLKITEMでもだめでしょうか?
駄目ならBTNを使うとかどうでしょうか?

No.2892 2016/09/18(Sun) 16:32:37

Re: セレクトボックスのイベント / abs
ありがとうございます。
セレクトボックス自体はITM_ACCTXTという種別になっていてCLKITEMでクリックができませんでした。
座標指定でクリックさせるのはあまり好きじゃないので、最終手段で考えていたのですが、
やはりそれしかないかもしれないですね。

No.2894 2016/09/18(Sun) 19:59:04
機種別最小値 / SEN
いつもお世話になっております。
下記のようなのもで、機種別最小値を出したいのですが、途方に暮れてます。
XLSなので、"=MIN.."で埋め込めばよいのか、そうだと機種が増えた時、書き直さないといけませんし、
ご教授いただけませんでしょうか?


dim 機種[15],梱包[15],p=0,仕掛[15]
検索 = fopen("ハウス梱包.csv")
  for i = 2 to fget(検索, F_LINECOUNT)
   IFB fget(検索,i,7) = "T" THEN
    機種[p]=fget(検索,i,1)
    梱包[p]=fget(検索,i,2)
    p=p+1
   endif
  next
fclose(検索)

csv = fopen("Y:\zai.csv")
Excel = XLOPEN("C:\在庫状況.xls")
XLACTIVATE(Excel, "専用梱包")
Ex = GETACTIVEOLEOBJ("Excel.Application")

for p = 0 to length(梱包)-1
 XLSETDATA(Excel, 機種[p], 1, p+2)
 XLSETDATA(Excel, 梱包[p], 2, p+2)
 仕掛[P] = XLGETDATA( Excel,9,p+2) //仕掛かり 5行目
next

ifb XLGETDATA( Excel,4,1 ) <> fget( csv,2,35) then
 Ex.Rows(4).Insert
 Ex.Rows(4).Insert
 Ex.Rows(4).Insert
 Ex.Rows(4).Insert
 Ex.Rows(4).Insert
 Ex.Rows(4).Insert
 Ex.Rows(4).Insert
 Ex.Rows(4).Insert
 XLSETDATA(Excel, fget(csv,2,35), 4, 1) //更新日
 XLSETDATA(Excel, "注残", 5, 1)
 XLSETDATA(Excel, "出荷", 6, 1)
 XLSETDATA(Excel, "在庫−注残", 7, 1)
 XLSETDATA(Excel, "前日生産", 8, 1)
 XLSETDATA(Excel, "仕掛−前日生産", 9, 1)
 XLSETDATA(Excel, "受注可能数", 10, 1)
 for p = 0 to length(梱包)-1
  for i = 2 to fget(csv, F_LINECOUNT)
   IFB fget(csv,i,2) = 梱包[p] THEN
    DIM 在庫 = fget(csv,i, 5)
    DIM 注残 = fget(csv,i, 12)
    DIM 出荷 = fget(csv,i, 7)
    DIM 前日生産 = fget(csv,i, 3)
    XLSETDATA(Excel, 在庫, 4, p+2)
    XLSETDATA(Excel, 注残, 5, p+2)
    XLSETDATA(Excel, 出荷, 6, p+2)
    XLSETDATA(Excel, 在庫 - 注残, 7, p+2)
    XLSETDATA(Excel, 前日生産, 8, p+2)
    XLSETDATA(Excel, 仕掛[P] - 前日生産, 9, p+2)
    XLSETDATA(Excel, 在庫 - 注残 + 仕掛[P] - 前日生産, 10, p+2)
    break
   endif
  next
 next
endif
fclose(csv)
XLCLOSE(Excel)

在庫状況.xls
機種,T177,T177,T199,T199,
梱包,17A,TH6,19A,TH6
更新日,扉,部品箱,扉,部品箱
160909,25,23,23,23,
注残,8,15,7,15,
出荷,1,2,1,2,
在庫−注残,17,8,16,8,
前日生産,0,0,0,0,
仕掛−前日生産,60,90,33,90,
梱包別受注可能数,77,98,49,98,
機種別受注可能数,77,77,49,49,←機種別最小値を出したい

No.2856 2016/09/11(Sun) 13:57:50

Re: 機種別最小値 / Nagatani
>>機種別最小値を出したい

//スクリプトはここから
PUBLIC HASHTBL 機種      // パブリック、大・小文字区別しない、キーは書込み順
HASHTBL 機種名 = HASH_CASECARE or HASH_SORT // 大・小文字区別、キーはソート
dim 機種名[15],可能数[15]

 Excel = XLOPEN("C:\Users\Nagatani\Documents\在庫状況.xls")
 Ex = GETACTIVEOLEOBJ("Excel.Application")

//列数を数える 
 LonLast = 0
 WHILE EX.ActiveSheet.CELLS(11,LonLast+2).VALUE <> ""
  LonLast = LonLast + 1
 WEND
 LonLast = LonLast - 1

//配列に記憶
 FOR LonI1 = 0 TO LonLast - 1
  IF 機種[ Ex.ActiveSheet.CELLS(1,LonI1 + 2).VALUE , HASH_EXISTS ] = False THEN
   機種[ Ex.ActiveSheet.CELLS(1,LonI1 + 2).VALUE ]=Ex.ActiveSheet.CELLS(1,LonI1 + 2).VALUE //機種名
  ENDIF
 NEXT

//機種名に登録がなければ登録・あれば比較して可能数を変更
 LonLast2 = LENGTH(機種) - 1
 FOR LonI1 = 0 TO LonLast2
  FOR LonI2 = 0 TO LonLast
   IF 機種[LonI1,HASH_VAL] = Ex.ActiveSheet.CELLS(1,LonI2 + 2).VALUE THEN
    機種名[LonI1] = Ex.ActiveSheet.CELLS( 1,LonI2 + 2).VALUE //機種名
    IF (可能数[LonI1] = "" OR 可能数[LonI1] > Ex.ActiveSheet.CELLS(11,LonI2 + 2).VALUE) THEN
     可能数[LonI1] = Ex.ActiveSheet.CELLS(11,LonI2 + 2).VALUE //可能数
    ENDIF
   ENDIF
  NEXT
 NEXT
 
//表示
 FOR LonI1 = 0 TO LonLast2
  PRINT "機種名 " + 機種名[LonI1] + " : " + 可能数[LonI1]
 NEXT
//スクリプトここまで


>>機種が増えた時、書き直さない
 ?@エクセルシートの上(場合によって左側)に必要な最小値を表示させて固定する。
 ?A機種を追加する場合は下(場合によっては右側)へ挿入
  こうすれば上記スクリプトも必要ないような?

「ハウス梱包.csv」と「ZAI.CSV」がわからなかったので・・・はずしてたらごめんなさい!

No.2858 2016/09/11(Sun) 19:10:13

Re: 機種別最小値 / SEN
ありがとうございます。
なんか、自分にはちょっと難しそうです。
計算式を貼り付ける以外に想像していたのは、CALCARRAYでして、
下記のも一つ機種が終わると止まってしまいますし、
一つ目のセルには最小値が入りません(なければないでそれも支障はないのですが)。
全然ではありますが、簡単なのはありませんでしょうか?
恐縮です。

dim 梱包可能数[10]

Excel = XLOPEN("C:\在庫状況.xls")
XLACTIVATE(Excel, "専用梱包")
Ex = GETACTIVEOLEOBJ("Excel.Application")
 i = 2
 REPEAT
  左機種 = XLGETDATA(Excel,1,i)
  機種 = XLGETDATA(Excel,1,i+1)
  梱包可能数[i]= XLGETDATA(Excel,10,i)
  i=i+1
 UNTIL 左機種<>機種
 XLSETDATA(Excel,CALCARRAY(梱包可能数,CALC_min),11, i-1)
XLCLOSE(Excel)

No.2859 2016/09/11(Sun) 22:36:12

Re: 機種別最小値 / Liners
// 簡単 = 最小行数の意味なら… 変数を抑え、IF文を廃止して既出の手法に配慮したが…いかがでしょうか?

Ex = GETACTIVEOLEOBJ("Excel.Application")
hashtbl h
n = Ex.Range("A1").End(-4161).Column // xlToRight = -4161
for i = 2 to n
  h[EX.ActiveSheet.CELLS(1, i).value] = h[EX.ActiveSheet.CELLS(1, i).value] + "," + EX.ActiveSheet.CELLS(10, i).value
next
for i = 2 to n
   EX.ActiveSheet.CELLS(11, i).value = CALCARRAY(Split(h[EX.ActiveSheet.CELLS(1, i).value], ",", 1, 1),CALC_min)
next

No.2860 2016/09/12(Mon) 03:50:57

Re: 機種別最小値 / 森
エクセルのピボットテーブル機能を使った方が良いのでは?
UWSCのことではないので、ここでの説明はやめておきますが、
解説サイトがたくさん有るので「ピボットテーブル 最小値」とググってみて下さい。

ここなんかが、分かりやすそうに思います。
http://haku1569.seesaa.net/article/403458311.html

No.2861 2016/09/12(Mon) 07:53:19

Re: 機種別最小値 / SEN
ありがとうございます。
これだと思って組み込んで動かしまして家のパソコンではうまく動くのですが、
しかし、会社のパソコンでは最後のエクセルへの書き込みのところでなにも転記されません。
家のはEXCEL2016、EXCEL2010です。
こんな事ありますでしょうか?
エクセルへの書き込みのところは下記のような感じに書き換えさせていただきました。
家のパソコンではうまくいくので、問題はないと思いますが、あと一歩で悔しい思いです。
何をお伝えしたら、わかりますでしょうか?

XLSETDATA(Excel,CALCARRAY(Split(h[機種[i-1]],",",1,1),CALC_min),11,i+1)

No.2875 2016/09/16(Fri) 23:13:08

Re: 機種別最小値 / Liners
>こんな事ありますでしょうか?
あり得ますが、ほとんどの場合スクリプトかデータに問題があります。

>何をお伝えしたら、わかりますでしょうか?
まず改変なしの動作結果です。ここで問題なら根本的原因です。
次に改変したもので、単独で動作する最小限のスクリプトと使用データ。

>XLSETDATA(Excel,CALCARRAY(Split(h[機種[i-1]],",",1,1),CALC_min),11,i+1)
さすがに、これだけでは…

ただ一瞬で不自然なのは分かります。機種[i-1]の部分で通常このようには書きません。
この部分は表示されている列の機種名で、順不同かつ重複・不定数なので、通常配列には入れずに、その都度セルから読み取ります。
少なくともこんな風に書くでしょう。

XLSETDATA(Excel,CALCARRAY(Split(h[XLGETDATA(Excel,1,i+1)],",",1,1),CALC_min),11,i+1)

No.2882 2016/09/17(Sat) 22:50:51

Re: 機種別最小値 / SEN
何から何まで済みません。
下記のものが全部です。
昨日、会社のパソコンで調べた限りでは、CALCARRAYの最低値がうまく取れないみたいです。
よろしくお願いします。


dim 機種[100],梱包[100],p=0,仕掛[100],梱包可能数[100]
hashtbl h
検索 = fopen("C:\ハウス梱包.csv")
  for i = 2 to fget(検索, F_LINECOUNT)
   IFB fget(検索,i,7) = "TH" THEN
    機種[p]=fget(検索,i,1)
    梱包[p]=fget(検索,i,2)
    print p+" "+機種[p]
    p=p+1
   endif
  next
fclose(検索)

dim 列数 = p

csv = fopen("C:\zai.csv")
Excel = XLOPEN("C:\在庫状況.xls")
XLACTIVATE(Excel,"専用梱包")
Ex = GETACTIVEOLEOBJ("Excel.Application")

for p = 0 to 列数
 XLSETDATA(Excel, 機種[p], 1, p+2)
 XLSETDATA(Excel, 梱包[p], 2, p+2)
 仕掛[P] = XLGETDATA( Excel,9,p+2)
next

ifb XLGETDATA( Excel,4,1 ) <> fget( csv,2,35) then
 Ex.Rows(4).Insert
 Ex.Rows(4).Insert
 Ex.Rows(4).Insert
 Ex.Rows(4).Insert
 Ex.Rows(4).Insert
 Ex.Rows(4).Insert
 Ex.Rows(4).Insert
 Ex.Rows(4).Insert
 Ex.Rows(4).Insert
 XLSETDATA(Excel, fget(csv,2,35), 4, 1) //更新日
 XLSETDATA(Excel, "注残", 5, 1)
 XLSETDATA(Excel, "出荷", 6, 1)
 XLSETDATA(Excel, "在庫−注残", 7, 1)
 XLSETDATA(Excel, "前日生産", 8, 1)
 XLSETDATA(Excel, "仕掛−前日生産", 9, 1)
 XLSETDATA(Excel, "受注可能数(梱包)", 10, 1)
 XLSETDATA(Excel, "受注可能数(機種)", 11, 1)
 for p = 0 to 列数
  for i = 2 to fget(csv, F_LINECOUNT)
   IFB fget(csv,i,2) = 梱包[p] THEN
    DIM 在庫 = fget(csv,i, 5)
    DIM 注残 = fget(csv,i, 12)
    DIM 出荷 = fget(csv,i, 7)
    DIM 前日生産 = fget(csv,i, 3)
    XLSETDATA(Excel, 在庫, 4, p+2)
    XLSETDATA(Excel, 注残, 5, p+2)
    XLSETDATA(Excel, 出荷, 6, p+2)
    XLSETDATA(Excel, 在庫 - 注残, 7, p+2)
    XLSETDATA(Excel, 前日生産, 8, p+2)
    XLSETDATA(Excel, 仕掛[P] - 前日生産, 9, p+2)
    XLSETDATA(Excel, 在庫 - 注残 + 仕掛[P] - 前日生産, 10, p+2)
    梱包可能数[P] = 在庫 - 注残 + 仕掛[P] - 前日生産
    h[機種[P]] = h[機種[P]] + "," + 梱包可能数[P]
    break
   endif
  next
 next
 for i = 1 to 列数
  //XLSETDATA(Excel,CALCARRAY(Split(h[機種[i-1]],",",1,1),CALC_min),11,i+1)
  XLSETDATA(Excel,CALCARRAY(Split(h[XLGETDATA(Excel,1,i+1)],",",1,1),CALC_min),11,i+1)
  if 機種[i-1] = "" then break
 next
endif
XLCLOSE(Excel)
fclose(csv)

ハウス梱包.csv
間口/機種,梱包,数,掛率,企業体,マイナス,梱包在庫抽出
177A,17A4,1,,,1,TH
177A,10-6,1,,,1,TH
199A,19A4,1,,,1,TH
199A,10-6,1,,,1,TH

a1,梱包番号,a2,a3,在庫数,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23,a24,a25,a26,a27,a28,a29,a30,a31,a32,a33,a34,a35,a36,a37,a38,a39,a40,a41
1,10-6,0,0,61,0,0,0,0,120,105,45,46,2,206,563,201,120,0,0,0,0,0,0,0,0,0,570,150,210,0,0,0,0,160716,0,0,0,0,0,0,0,0
1,17A4,0,0,110,0,0,0,0,146,86,29,50,2,206,345,126,84,0,0,0,0,0,0,0,0,0,306,151,148,0,0,0,0,160716,0,0,0,0,0,0,0,16
1,19A4,0,0,41,0,0,0,0,55,52,16,38,2,206,220,75,36,0,0,0,0,0,0,0,0,0,190,122,58,0,0,0,0,160716,0,0,0,0,0,0,0,16,

在庫状況.xls
機種     177A   177A  199A   199A
梱包     17A4   10-6  19A4   10-6
       
        25 23 23 23
注残      8 15 7 15
出荷      1 2 1 2
在庫−注残   17 8 16 8
前日生産    0 0 0 0
仕掛−前日生産 60 90 33 90
受注可能数   98 15 49 98
        15 15 49 49

No.2884 2016/09/18(Sun) 10:51:23

Re: 機種別最小値 / 俄プログラマー
>CALCARRAYの最低値がうまく取れないみたいです。

Linersさんが書かれている事を試しましたか?
抜粋します
「ほとんどの場合スクリプトかデータに問題があります。」
「単独で動作する最小限のスクリプトと使用データ」

山を見てダメなら木を見る
木を見てダメなら葉っぱを見る
プログラムのバグ取りはこんな風です。

「CALCARRAYの最低値がうまく取れない」のであれば
取得先のデータが正しくないからです。
そのデータが正しい形になっていますか?
目で見えるように画面に表示してみてください。
そして確認です。
思っているデータが例えば
「10 40 35 5 75」
の筈なのに
「」
なんて事も良くありますよ。
必要であればCALCARRAYに特化した動作確認用のサンプルプログラムを作ってみましょう。
それで動作がしっかり出来ているかの確認です。

No.2885 2016/09/18(Sun) 11:43:48

Re: 機種別最小値 / Liners
結論から言うと動作しません。原因はデータの不備です。
問題個所は ifb XLGETDATA( Excel,4,1 ) <> fget( csv,2,35) then で在庫状況.xlsの該当部分は空白です。

またXLACTIVATE(Excel,"専用梱包")も不明ですし、在庫状況.xlsの内容もこのデータで作成されたものではありません。
全体にデータの不備が目立ちます。再チェックしてください。

スクリプトも正常動作する部分は除外して、命題に沿った必要最低限として下さい。
原因不明なので、全体を見てほしいと思う気持ちは理解できますが、逆効果です。

該当個所関連をコメントアウトすると、正常動作します。

受注可能数(梱包) 141 106 58 106
受注可能数(機種) 106 106 58 58

No.2890 2016/09/18(Sun) 13:56:29
CHKIMGの色を無視して形でチェックするについて / たつと
画面上の+の個数を数えたいと思っています。

 透過色/色無視: 0: 指定なし (デフォルト)
         1: 左上、2:右上、3:左下、4:右下 の1ピクセルの色を透過色として処理
         -1: 色を無視して形でチェックする

上記のように言われているため、

CHKIMG(画像ファイル場所,-1,,,,,,)

上記のように設定しましたが、+が4個表示されているのに0だったり
2個表示されているのに1個だったりします。
(かならず認識が少なくなります)

正しい使い方はあるのでしょうか。
また、+の色は赤、緑、白、黄色のよんしょくです。

画像はペイントでBIGMAP(24bit)に設定しています。

回答お願いいたします。

No.2876 2016/09/17(Sat) 01:26:41

Re: CHKIMGの色を無視して形でチェックするについて / koi
依然同じようなことで悩みました

+の実際の大きさがわかりませんが
画像をすさまじく拡大すると背景との境界で色のにじみが発生していませんか?
おそらくそのにじみが原因だと思われます
  ※ 元の大きさ・色にもよりますがペイントでは最大に拡大しても
     判別が難しいかもしれません

自分で単色で線を引いて描画した場合にじみはありませんが
テキスト入力で色指定して描画するとにじみが発生します

No.2877 2016/09/17(Sat) 02:07:46

Re: CHKIMGの色を無視して形でチェックするについて / umiumi
数を数えるなら第7引数は-1
CHKIMG(画像ファイル場所,-1,,,,,-1)

No.2880 2016/09/17(Sat) 02:57:06
ength内ドット構文でエラー / しき
以下の最後の length(o_IE.Document) でエラーになります
length 内ドット構文で 戻値がオブジェクトの場合に起こるようです
Win7x64 IE11 uwsc5.2.2


o_IE = GetActiveOleObj("InternetExplorer.Application")
o_doc = o_IE.Document

print o_IE.Top        //86
print length(o_IE.Top)    //2

print o_IE.Name       //Internet Explorer
print length(o_IE.Name)   //17

print o_IE.Document +""     //[object HTMLDocument]
print length(o_IE.Document +"") //21

print o_doc         //3318420
print length(o_doc)     //7

print o_IE.Document     //3318420
print length(o_IE.Document) //COM_Error:メンバーが見つかりません。

No.2869 2016/09/15(Thu) 18:09:10

Re: ength内ドット構文でエラー / umiumi
修正します。
No.2879 2016/09/17(Sat) 02:56:28
DOSCMD関数でフォルダを開く / ひつじ
初投稿です。
DOSCMD関数でフォルダを開くことについて質問です。

DOSCMD("start <#DBL><#DBL> " + "<#DBL>C:\Program Files<#DBL>")
DOSCMD("explorer " + "<#DBL>C:\Program Files<#DBL>")

フォルダを開く際、上記のどちらの記述方法でも指定のフォルダを開けますが、
前者の方が、スパッと素早く開いてくれるので、いつも前者の方で記述しています。
しかし、開いたフォルダを閉じずに、もう一度 前者と同じコマンドを実行すると、
そのフォルダが閉じてしまいます。
さらにその状態で、もう一度 前者のコマンドで同じフォルダを開こうとしても、
フォルダが開かないようになっているのです。
ちなみに後者の方では、普通に同じフォルダが もう一つ開きます。こちらは問題ないです。

ですがスパッと素早く何度も開きたいのです。その方が気持ちが良いのです。
コマンドプロンプトで start のヘルプを見ましたが、サッパリです。
スパッと解決方法が分かる方おりますでしょうか?

No.2864 2016/09/15(Thu) 02:20:52

Re: 参考用に報告 / しろまさ
私の環境では実行するたびに別のウィンドウが開かれていきます(win7 32bit)

DOSCMD("start <#DBL><#DBL> " + "<#DBL>C:\Program Files<#DBL>")

No.2866 2016/09/15(Thu) 09:56:07

Re: DOSCMD関数でフォルダを開く / stuncloud
僕の環境では再現しました (Win10 x64 1607)
コマンドプロンプトからだと問題ないのに、DOSCMDからだと
>しかし、開いたフォルダを閉じずに、もう一度 前者と同じコマンドを実行すると、
>そのフォルダが閉じてしまいます。
>さらにその状態で、もう一度 前者のコマンドで同じフォルダを開こうとしても、
>フォルダが開かないようになっているのです。

の状態になってしまいますね

別のディレクトリを指定すればウィンドウが開かれるので、毎回別のディレクトリを指定するしかないのかな…?

ちなみに
> DOSCMD("explorer " + "<#DBL>C:\Program Files<#DBL>")
のほうだと実行する度に新しいプロセスが作られてしまってちょっといやな感じでした (ウィンドウ閉じてもプロセス終了しないし)
スパっと開かないのもそのせいだと思います

それを踏まえた代替手段としては

with createoleobj("Shell.Application")
 .ShellExecute("C:\Program Files")
endwith

とすることかな?これもstartコマンドと同様に既にあるプロセスで開くので早いです
続けて実行でウィンドウが閉じられたり開けなくなるということもありません
ただし、同じフォルダが既に開かれていた場合はそれがアクティブになるだけなので、いくつもウィンドウを開きたい場合は別のパスを指定しなければならないです
その点はエクスプローラの動作的にしょうがないかな、と

No.2867 2016/09/15(Thu) 11:08:36

Re: DOSCMD関数でフォルダを開く / satocha
解決策はスパッといくかどうか微妙ですがdoscmdの3番目の引数をtrueにしておけば、ウインドウが閉じなくなります。この場合端末画面が一瞬開くのでスピード的には問題かも。
別の方法としては
powershell("cmd /c <#dbl><#dbl> "+開きたいパス)
でも複数回起動しても閉じません。この例ではpowershellの起動に時間がかかりさらにcmd.exeを出しているのでこれも時間的には微妙です。

start2回目で閉じ、3回目でまた開きと続くみたいですが何度もやっているとこのウインドウは開かなくなります。
いろいろ試したところ、実はエクスプロ−ラーのウインドウが閉じているのではなく非表示なっているだけみたいです。
次のテストプログラムでウインドウの再表示が確かめられます。

cmdstr  ="start <#dbl><#dbl> c:\"
for i=1 to 10
  doscmd(cmdstr)
next
//ここでdoscmd(cmdstr)をやってもウインドウが開かない。
sleep(1)
doscmd(cmdstr)

if btn_yes=msgbox("ウインドウを復活しますか?",btn_yes+btn_no)
    for id in getallwin()
      if pos( "cabinet",status(id, st_class))
        ctrlwin( id, show )
      endif
    next
endif

No.2868 2016/09/15(Thu) 11:45:49

Re: DOSCMD関数でフォルダを開く / ひつじ
>しろまさ 様
環境を書き忘れていました。
win7 64bit uwsc5.2.2 の環境で起こりました。
64bit 環境で起こる現象なのかもしれません。
ありがとうございました。

>stuncloud 様
COMオブジェクト、スッパスパでした。
フォルダもプログラムもスッパスパですね。
文句なしです。

>satocha 様
powershell は確かに少し起動に時間が掛かりますね。
cmd を呼出して開けるんですね。コピペしてやってみたのですがプログラムしか開けませんでした。

>非表示なっているだけみたいです。
テストプログラム実行して見ました。解かりました。
ウィンドウは残っていて、 ctrlwin( id, show ) で再表示できるのですね。スッキリしました。
お時間を割いていただき誠にありがとうございました。


答えてくださった皆様ありがとうでごわす。

No.2870 2016/09/16(Fri) 02:39:19

Re: DOSCMD関数でフォルダを開く / satocha
ひつじ様
>コピペしてやってみたのですがプログラムしか開けませんでした。

cmdstr="cmd /c <#dbl>start `<#dbl>`<#dbl> `<#dbl>c:\program files`<#dbl><#dbl>"
powershell(cmdstr)

UWSCの引用符、powershellの引用符、コマンドプロンプトの引用符のそれぞれの使い方の顔を立ててやるとこんな感じになります。

No.2872 2016/09/16(Fri) 17:14:33

Re: DOSCMD関数でフォルダを開く / satocha
度々申し訳ございません。

引用符を減らせることに気づきました
cmdstr="cmd /c start `<#dbl>`<#dbl> `<#dbl>c:\program files`<#dbl>"

No.2873 2016/09/16(Fri) 17:18:30

Re: DOSCMD関数でフォルダを開く / ひつじ
>satocha 様
できましたっ。ありがとうございます。

No.2878 2016/09/17(Sat) 02:54:28
EXE化による使用期限について / ゆぐゆぐ
フリー版UWSCにて製作したUWSファイルを、ついさきほどダウンロードしたPro版にてEXE化しました。
EXE化したファイルは製作したパソコンにおいてはしっかり動くのですが、自宅にある別のパソコン2台へ移動させて起動したところ、[このEXEは使用期限が終了しました]と表示されどちらも動きません。
※USBによる移動とアップローダーによる移動を試したがどちらも同じ挙動
いずれもWIN7です

ライセンス購入せずにEXE化したことが原因なのでしょうか?

No.2853 2016/09/10(Sat) 09:00:06

Re: EXE化による使用期限について / routa
当然の結果でしょう。
No.2854 2016/09/10(Sat) 10:21:41

Re: EXE化による使用期限について / 俄プログラマー
購入すれば解決するのは分かると思いますが
まだ購入したくないのならEXEせず関連付けして動かせば良いですね。

No.2855 2016/09/10(Sat) 12:38:58

Re: EXE化による使用期限について / ゆぐゆぐ
俄プログラマーさん、ありがとうございます。
不具合とのことでないのならこれで気兼ねなく購入できます。

No.2865 2016/09/15(Thu) 09:08:03
納期について / 平田
UWSC Pro
http://www.uwsc.info/purchase.html
2個ほしいのですが、カード支払したとして納期はどれくらいでしょうか?

 

No.2862 2016/09/12(Mon) 13:43:15

Re: 納期について / A-kun
ベクターでの購入の話だと思いますが、すぐに発行されましたよ。
No.2863 2016/09/12(Mon) 20:16:10
記録と再生について / 山びこ
UWSCで、検索窓に「相対性理論」と入力したところを記録して再生すると、「soutaiseirironn」と入力します。
「相対性理論」で入力するように再生するには、どうしたら良いのでしょうか ?

No.2822 2016/08/30(Tue) 03:06:02

Re: 記録と再生について / 俄プログラマー
どこの検索窓なのか書かないと以下のような事が起こります。

A「今の時期スイカを売っているお店を教えて下さい。」
B「スイカならスーパー〇〇に売ってますよ」
A「買いに行ったのですが赤いスイカでした。私は黄色いスイカが欲しいのです。」
B「だったらなぜ最初に黄色いスイカを売っているお店を教えてほしいと言わないのですか?」

このように的確な答えが欲しいのならば最初に全て伝えるべきです。
あなたは疑問について把握していてもそんな事は他人は知りません。
取り合えず先ずはここのサイトのサンプルページを全て見るべきです。
それでも分からない時はもう一度詳しく質問をしてみてはいかかでしょうか?

No.2823 2016/09/01(Thu) 04:02:38

Re: 記録と再生について / 山びこ
日本人のほとんどは、ヤフーかグーグルでキーワード検索をするので、検索窓はヤフーやグーグルであることは、頭の良い人なら気が付きます。

サンプルページは数が多いし、UWSC初心者の私には、調べ方が分かりません。あなた自身、サンプルページに回答があるなら、他人に説教する前に、サンプルページから回答を示すべきです。

俄プログラマーさんは、二度と、私の質問に回答をしないでください。

No.2824 2016/09/01(Thu) 07:27:19

Re: 記録と再生について / しろまさ
http://az-store.nrym.org/archive/web/teach
http://www.redout.net/data/osietekun.html

安心してください。私も二度と回答しません。

No.2825 2016/09/01(Thu) 09:23:39

Re: 記録と再生について / satocha
この掲示板を見る人のほとんどにとって「検索窓」といえばこれだと思います

ie          =CreateOleObj( "InternetExplorer.Application" )
ie.navigate( "http://www3.rocketbbs.com/13/bbs.cgi?id=umiumi&mode=find" )
ie.visible      =true
keyword        ="相対性理論"
COM_ERR_IGN
while 1
  if ( !ie.busy ) and ( ie.readyState = 4 ) then break
  sleep(0.1)
wend
COM_ERR_RET
getOleItem( ie.document.getElementsByTagName( "input" ) )
inputs    =slice( all_ole_item )

for i in inputs
  if i.type = "text"
      i.value  =keyword
      break
  endif
next
for i in inputs
  if i.type = "submit"
      i.click()
      break
  endif
next

No.2826 2016/09/01(Thu) 16:27:31

Re: 記録と再生について / 夏はキッズが!
山びこ様、質問するという事は答えて欲しいと言う事ですよね。回答してもらうのに回答者に配慮のない質問の仕方は頂けません。もう少し、一般常識から勉強し直して下さい。
No.2832 2016/09/02(Fri) 15:03:16

Re: 記録と再生について / 山びこ
私が求めているものは、「説教」ではなくて、「回答」です。

説教ばかりで、回答を示してくださった方がいなかったのは、残念です。

初心者に親切な人に、聞くことにします。

No.2850 2016/09/07(Wed) 01:16:18

Re: 記録と再生について / 初心者を言い訳にするな
礼儀の無い人間に誰が教えるか。バカ。
No.2851 2016/09/07(Wed) 10:50:33

Re: 記録と再生について / satocha
私は「説教」もしていないしちゃんと「回答」しましたよ。
示したコードはこの掲示板の検索窓に「相対性理論」を打ち込み、検索ボタンを押すところまでの手順を自動実行するものです。あなたの質問があったので自分の時間を割いてプログラムしました。実行してはいないのでしょうか。
あとはGoogleなりYahooなりAmazonなり好きなサイトのアドレスを入れ、そのサイトの検索窓のHTML要素を指定すれば動くはずです。

No.2852 2016/09/07(Wed) 12:13:28
エクセルシートにコピー分を最終行に順次入力方法 / シスイ
以前にも投稿させて頂き、色々ヒントを頂いて試しているのですがまったくうまくできません。
お手上げ状態です。過去ログでエクセル最終行取得で見てはいますが、うまくいきません。
助けて頂けないでしょうか?

下記のコードです。

xlUp=-4162

Excel = XLOPEN("C:\Users\aruke\Desktop\Book1.xlsx")
tek = INPUT("Sheetを入力してください","Sheet")
XLACTIVATE(Excel, tek)

yA = 1  //A列の現在行
yB = 1  //B列の現在行

SENDSTR(0, "")
while True
  sleep(0.2)
  
  ifb getkeystate(vk_n) then
    x = 1
  elseif getkeystate(vk_m) then
    x = 2
  else
    continue  //a か b が押された場合のみ処理する
  endif
  
  ss = GETSTR(0)
  ifb (ss <> "")  //クリップボードにある場合のみ処理する
    ifb (1 = x) then
      y = yA
    elseif (2 = x) then
      y = yB
    endif
    
y = Excel.ActiveSheet.Cells(Excel.ActiveSheet.Rows.Count, 1).End(xlUp).Row
If y>1 or (y=1 and Excel.ActiveSheet.Cells[y, x].Value<>"") Then y=y+1 //先頭を考慮(上限は適当に)
Excel.ActiveSheet.Cells[y, x].Value = "データ"
    SENDSTR(0, "") // クリップボードをクリア
    
    //行送り
    y = y + 1
    ifb (1 = x) then
      yA = y
    elseif (2 = x) then
      yB = y
    endif
    
  endif
wend

No.2841 2016/09/05(Mon) 09:40:57

Re: エクセルシートにコピー分を最終行に順次入力方法 / しき
//初めにそれぞれの空欄行を取得する

Excel = XLOPEN()
XLACTIVATE(Excel, "Sheet1")

o_sheet = Excel.ActiveSheet
yA = sub_getBlankRowNumber(o_sheet, 1)  //A列の現在行(空欄行)
yB = sub_getBlankRowNumber(o_sheet, 2)  //B列の現在行(空欄行)

msgbox(yA +" , "+ yB)

//以下、前回の投稿と変更なし
//http://www3.rocketbbs.com/13/bbs.cgi?id=umiumi&mode=pickup&no=2659
SENDSTR(0, "")
while True
  sleep(0.2)
  
  ifb getkeystate(vk_a) then
    x = 1
  elseif getkeystate(vk_b) then
    x = 2
  else
    continue  //a か b が押された場合のみ処理する
  endif
  
  ss = GETSTR(0)
  ifb (ss <> "")  //クリップボードにある場合のみ処理する
    ifb (1 = x) then
      y = yA
    elseif (2 = x) then
      y = yB
    endif
    
    Excel.ActiveSheet.Cells[y, x].Value = ss
    SENDSTR(0, "") // クリップボードをクリア
    
    //行送り
    y = y + 1
    ifb (1 = x) then
      yA = y
    elseif (2 = x) then
      yB = y
    endif
    
  endif
wend


//下から上に探して最初の空欄がある行番号を返す
function sub_getBlankRowNumber(oSheet, iColumnNumber)
  dim i_bottomRow = oSheet.Rows.Count
  dim o_range   = oSheet.Cells(i_bottomRow, iColumnNumber)
  
  dim xlUp = -4162
  o_range = o_range.End(xlUp)     //Ctrl + ↑ と同じ操作
  
  ifb (empty <> o_range.Value) then  //空欄でなければ
    o_range = o_range.Offset(1, 0)  //一つ下のセル
  endif
  
  result = o_range.Row
fend

No.2847 2016/09/05(Mon) 20:57:06

Re: エクセルシートにコピー分を最終行に順次入力方法 / シスイ
しき様、できました、本当にありがとうございます。ずっと1ヶ月程、頭の中でモヤモヤしていたのが晴れました。教えて君から脱局できるよう実力をつけていきたいと思います。
No.2848 2016/09/06(Tue) 09:50:29
全1170件 [ ページ : << 1 ... 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 ... 117 >> ]