• ベストアンサー

VBS Msgbox実行時 タスクにWSHの表示

VBS Msgbox実行時にタスクにWSHが表示されて、Msgboxの内容が表示されません。 そのタスクをクリックするとMsgboxの内容が表示されます。 また、WSHがオレンジで点滅した状態の時もあります。 これもWSHタスクをクリックするとMsgboxの内容が表示されます。 この状態はどのような現象なのでしょうか? またWSHを非表示にしてMsgboxを表示するにはどうしたらよいでしょうか? Pcスペック: 64bit Core2 XP pro Sp3 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10359)
回答No.1

とりあえず、スクリプトを書いてください。

sabu_san
質問者

お礼

ご返答ありがとうございます。 これはAcadRemoconというAutoCadで有名なカスタマイズできるメソットを開発された方のdllを利用して作成したプロシージャの一部です。 VBSのメソットやステートメントにないものはAcadRemocon仕様になりますが、AutoCadを起動した状態で全て問題なく実行しています。 ただmsgboxだけが悪さをしているみたいです。 この中の Acad.acShowMessage "円・円弧、線分以外対応してません。"は vbsのmsgboxと同じ機能を持っていますので、 VbMsgBoxSetForegroundを追加することで最前面にメッセージを表示することが出来ましたが、やはりタスクにWSHの表示が出ます。 32bit XP pro ではタスクには表示されません。 また、 sub test() msgbox "テスト" End Sub はAutoCadを起動しないでwindows上で実行しても同じ結果で、タスクに時間をおいてWSHの表示が出ます。 なぜなんでしょうね? 64bitと32bitの違いでしょうか? 表示させない方法はあるのでしょうか? よろしくお願いします。

sabu_san
質問者

補足

Do '3 Escx = 0 Acad.acPostCommand "_modemacro^M図形への垂線1点目を指示/「ESC」→終了^M" gX = "" Acad.acGetPoint "", "", gX, gY '最初の指定点の座標 If gX = "" Then Escx = 1: Exit Do If Acad.apiGetAsyncKeyState(27) < 0 Then Escx = 1: Exit Do 'Escキーを押したら処理を抜ける If Not Acad.acDxfOut("", "@^M^M", False) Then Er: Exit Sub If Not Acad.DxfExtract(Cnt, EA, "ENTITIES", "", "*", "10|20|11|21") Then Er: Exit Sub OBNAME = EA(0, 1) 'オブジェクトの名前 LINE,CIRCLE OB1X = EA(1, 1): OB1Y = EA(2, 1) 'オブジェクトのX1,Y1 線分の始点 円、円弧の中心座標 OB2X = EA(3, 1): OB2Y = EA(4, 1) 'オブジェクトのX2,Y2 線分の終点 If Acad.apiGetAsyncKeyState(27) < 0 Then Exit Do 'Escキーを押したら処理を抜ける If OBNAME <> "LINE" And OBNAME <> "CIRCLE" And OBNAME <> "ARC" Then Acad.acShowMessage "円・円弧、線分以外対応してません。", VbMsgBoxSetForeground ' Acad.acActivate Acad.acPostCommand "^m" Escx = 1 End If If Escx <> 1 Then If OBNAME = "LINE" Then '2 線分に垂線 Acad.acGetDist "", OB1X & "," & OB1Y & "^m" & OB2X & "," & OB2Y & "^m", retLength, OBJA End If If OBNAME = "CIRCLE" Or OBNAME = "ARC" Then '3 円、円弧に垂線 '円の中心から基線始点までの方向角+90 objz = Acad.CalcAngle(OB1X, OB1Y, gX, gY, True) OBJA = objz + 90 If OBJA >= 360 Then OBJA = OBJA - 360 End If '最初の指定点からほぼ垂線方向2点目までの距離と方向角 If Not Acad.acGetDist("ほぼ垂線方向2点目を指示", "@^M", L, AGL) Then Er: Exit Do AGLP = AGL - OBJA: If AGLP < 0 Then AGLP = AGLP + 360 If AGLP < 180 Then HK3 = OBJA + 90: If HK3 >= 360 Then HK3 = HK3 - 360 If AGLP > 180 Then HK3 = OBJA - 90: If HK3 < 0 Then HK3 = HK3 + 360 '垂線を引く If KYRA <> 0 Then L = KYRA Acad.acPostCommand "^C^C_Line^m" & gX & "," & gY & "^m@" & L & "<" & HK3 & "^m^m" Else '何もしない End If Loop While True '3

関連するQ&A

専門家に質問してみよう