初めての店舗開業を成功させよう>>

いつもありがとうございます。
早速質問ですが,職場での周知用に,vbsでHTMLを生成し,
ファイルサーバにある画像(JPG)を取得して,HTMLに埋め込もうとしています。

具体的には以下のとおり表示させようとしていて,XP+IE6だとうまくいくのですが,Vista+IE7だと画像が表示されません。
(生成されたHTMLファイル自体は,画像が表示されます。
 VBSで一連の流れにした場合のみ表示できないようです。)
つたない文章で申し訳ございませんが,Vista+IE7で表示させるため,お知恵をいただけませんでしょうか。
画像を他部署で作成し,頻繁に更新するため,VBS自体はクライアントに置きっぱなしで,ファイルサーバの画像ファイルを差替えして運用したいと思っています。
---
sub Open_HTML(strImageFile)
Dim objIE
Dim objShell
'初期設定(ウィンドウサイズ、表示位置に使用)
WScript.Echo "html作成" & strImageFile
'IEオブジェクトを作成
Set objIE = CreateObject("InternetExplorer.Application")
'IEの画面を表示
objIE.Visible = True
'カラのページを表示
'(これを行わないと以降のdocument.writeなどがエラーになるため)
objIE.Navigate "about:blank"
'HTMLを出力します
objIE.Document.Write "<html>" & vbcrlf
objIE.Document.Write "<head>" & vbcrlf
objIE.Document.Write "<title>HTML画像挿入テスト</title>" & vbcrlf
objIE.Document.Write "</head>" & vbcrlf
objIE.Document.Write "<body>" & vbcrlf
objIE.Document.Write "<table border=4 width=""100%"" height=""100%"">" & vbcrlf
objIE.Document.Write "<tr>" & vbcrlf
objIE.Document.Write "<td align=""center"" valign=""middle"">" & vbcrlf
objIE.Document.Write "<IMG SRC=" & strImageFile & "> " & vbcrlf
objIE.Document.Write "</td>" & vbcrlf
objIE.Document.Write "</tr>" & vbcrlf
objIE.Document.Write "</table>" & vbcrlf
objIE.Document.Write "</body>" & vbcrlf
objIE.Document.Write "</html>" & vbcrlf
'IEをアクティブに
Set objShell = WScript.CreateObject("WScript.Shell")
objShell.AppActivate("HTML画像挿入テスト - Microsoft Internet Explorer")
objShell.AppActivate("HTML画像挿入テスト - Windows Internet Explorer")
objIE.FullScreen = True
'30秒表示
WScript.Sleep(30000)
'画面のクリア
objIE.Navigate "about:blank"
'IEの終了
objIE.Quit
'オブジェクトの破棄
Set objIE = Nothing
Set objShell = Nothing
end sub

このQ&Aに関連する最新のQ&A

A 回答 (1件)

IE7 はちょっと特殊みたいです。



参考URL:「7.11 IEオブジェクトを作る(IE7編)」
http://www.happy2-island.com/vbs/cafe02/capter00 …

IE7 環境がないので実際のところわかりませんが、参考 URL の
情報からすると、IE のバージョンによって分岐処理すれば良さ
そうです。

試してもいないソースを提示してみる(´A `;)

下記は、WEB ページでインデントを表現するため、全角 SP を
使ってます。このまま、コピペすると VBS の場合はエラーと
なりますので、エディタでタブや半角 SP 等適当に置換して下さい。

また、IE をユーザーの手で閉じられてしまうと VBS がエラーを
起こします。30秒待機、自動で閉じる処理は止めといた方が無難です。

ところで... XP + IE6 環境で、上手くいってるのですよね...?

 # 私の環境では、なぜか画像が表示されないのです
 # まあ、いいか。

あと、Html の問題として、Meta タグで charset ぐらいは設定
した方が良いでしょう。それから、

 Document.Write
 Document.Writeln

の違いなども確認しておいて下さい。

 # VBS って VAL 関数使えない...?

最後に逃げ口上ですが、再質問等いただいても私には確認する
環境がないので、その場合は識者の回答をお待ち下さい。

Sub Open_HTML(sImageFileName)
  
  Dim IE, SH, Version
  
  Set IE = CreateObject("InternetExplorer.Application")
  Set SH = CreateObject("Shell.Application")

  IE.Visible = True
  With CreateObject("Scripting.FileSystemObject")
    Version = Left(.GetFileVersion(IE.FullName),1)
  End With
  If Version = "7" Then
    IE.Navigate2 "about:blank"
    IE.Quit
    Set IE = SH.Windows.Item(SH.Windows.Count - 1)
  Else
    IE.Navigate "about:blank"
  End If
  
  With IE.Document
    .Writeln "<html>"
    .Writeln "<head>"
    .Writeln " <meta http-equiv='Content-Language' content='ja'>"
    .Writeln " <meta http-equiv='Content-Type' content='text/html; charset=Shift_Jis'>"
    .Writeln " <title>HTML画像挿入テスト</title>"
    .Writeln "</head>"
    .Writeln "<body>"
    .Writeln "<table border=4 width='100%' height='100%'>"
    .Writeln "<tr>"
    .Writeln " <td align='center' valign='middle'>"
    .Writeln "  <img src='file://" & sImageFileName & "'>"
    .Writeln " </td>"
    .Writeln "</tr>"
    .Writeln "</table>"
    .Writeln "</body>"
    .Writeln "</html>"
  End With

  Set IE = Nothing
  Set SH = Nothing

End Sub
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QVBSの「MsgBox」について

こんにちは。
VBSをかじり始めなので、的外れだったらご容赦を。

例えば、

MsgBox"こんにちは"

を実行したとき、
「こんにちは」の部分を
太字にしたり、色をつけたり、等、目立つような表示に
することは可能なのでしょうか?
(また、画像を挿入したりとか)

よろしくお願いします。

Aベストアンサー

以前に似たような質問があり、答えております。
参考URLを見てください。

※MsgBoxについて
http://oshiete1.goo.ne.jp/kotaeru.php3?q=405473

※ダイアログにプレビュー表示
http://oshiete1.goo.ne.jp/kotaeru.php3?q=157966


画像を差し込むことも可能ですが、メッセージボックスを加工するより、フォームを利用したほうが、ずーっと楽です。

QMsgBoxについて

MsgBoxに表示させる文字の大きさや文字の色(赤)を指定する方法を教えて下さい、

Aベストアンサー

色を変えるまではやってませんが、、、
※太字
※斜体
※アンダーライン
※取り消し線
※フォントサイズ
の設定を可能としたメッセージボックスのサンプルを載せました。
VBの標準機能のみでは無理で、APIでMSGBOXを作り直すようなものなので、極めて面倒です。

フォームで作ることをお勧めします。

参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=384428

QVBAで画像を表示する方法

VBA初心者です。ExcelのVBAでプログラミングの練習をしています。
早速ですが質問させてください。
ユーザーフォーム上にコマンドボタンをクリックすることにより画像を表示させることはできるのですが、これをユーザーフォームを開いた瞬間に自動的に表示させる方法はないのでしょうか?

ちなみに現在は以下のようにしています。
Private Sub CommandButton1_Click()
Image1.Picture = LoadPicture(" ")
End Sub

インターネットで調べてみても見つからないので質問させてもらいました。分かりにくい説明でしたらすみません。

Aベストアンサー

UserFormのinitializeイベントかActivateイベントを使ってください。

Private Sub UserForm_Initialize()
 Image1.Picture = LoadPicture("C:\aaa.jpg")
End Sub

または、

Private Sub UserForm_Activate()
 Image1.Picture = LoadPicture("c:\aaa.jpg")
End Sub

Qフォントの大きさ

Msg_box 関数 でメッセージを出力しているのですが
マーク(注意、警告 etc)を用いての表現の方法しかないのでしょうか?
 例えば メッセージのフォントのサイズを各々メッセージによって
     変えれないのでしょうか?
初歩的なご質問で申し訳御座いません
宜しくお願いします

Aベストアンサー

一応サンプルを作りました。
やってみて面白かったけど、やはりオリジナルを作ったほうがかなり楽だということを実感しました。

注意:
ここの掲示板は文字がずれるので、図形が壊れます。以下の文章をメモ帳などのテキストエディタにコピって読んでください。

・・・さて本題・・・


※メッセージボックスの構造
┏━━━━━━━━━━━━━━━━┓
┣━━━━━━━━━━━━━━━━┫
┃                ┃
┃ ┏━┓ ┏━━━━━━━━┓ ┃
┃ ┃I┃ ┃MSG_AREA┃ ┃
┃ ┗━┛ ┗━━━━━━━━┛ ┃
┃                ┃
┃   ┏━━┓  ┏━━┓   ┃
┃   ┃B1┃  ┃B2┃   ┃
┃   ┗━━┛  ┗━━┛   ┃
┗━━━━━━━━━━━━━━━━┛
[I]・・・アイコン(クラス名:Static)
[MSG_AREA]・・・メッセージ表示領域(クラス名:Static)
[B1/B2]・・・ボタン(クラス名:Button)
という構造になっています

メッセージボックスは指定のスタイルによりアイコンの有無・ボタンの数が変化します。
また、メッセージ文字数により、メッセージの表示領域が変更され、ダイアログのサイズも算出されます。
しかもこの大きさの計算は、ダイアログオブジェクトが創生される前に行われるため、フォントを指定したあと、独自で再配置をしなければなりません。この計算ロジックは非常にややこしいものです。


※VBのMsgBox関数(またはAPIMassegeBox関数)内部で行われていると思われる手順(フックしてSpyで調べました)
1.MSGの文字数/ボタンの数/アイコンの有無により、ダイアログの大きさの算出・各オブジェクトの配置位置の算出
2.ダイアログ本体を創生
3.ボタンをダイアログ内部に創生(複数のボタンが存在するとき、左側のボタンから創生)
4.アイコンがあるならアイコンを創生
5.メッセージを創生
6.ボタンにフォーカスをセット
7.画面に表示する(サンプルではここで操作しています)
という順序のようです。


サンプルは、画面に表示する直前にフォントを指定しています。上記で述べたとおり、各オブジェクトはすでにできあがってしまっているので、再配置が必要になります。(サンプル内のsetResize関数を作りこんでください)


以下を標準モジュールに貼り付けて、Sub Mainから実行するようにしてください。
[myMsgBox関数]がオリジナルMsgBoxを呼ぶための関数です。



Option Explicit

Public Const WH_CBT = 5

'太文字([400/700]にしているけど、フォントによって違うかも?)
Public Enum MY_BOLD
  MYB_FLASE = 400
  MYB_TRUE = 700
End Enum
'斜体
Public Enum MY_ITALIC
  MYI_FLASE = 0
  MYI_TRUE = 1
End Enum
'下線
Public Enum MY_UNDERLINE
  MYU_FLASE = 0
  MYU_TRUE = 1
End Enum
'取消し線
Public Enum MY_STRINKEOUT
  MYS_FLASE = 0
  MYS_TRUE = 1
End Enum


Public Const HCBT_ACTIVATE = 5 ' ウィンドウがこれからアクティブになる通知メッセージ

Public Const WM_SETFONT = &H30 'フォントを指定
Public Const WM_GETFONT = &H31 'テキストボックス、ラベル等が現在使っているフォントのハンドル

Public Const LF_FACESIZE = &H20
Public Const POINT_PER_INCH = 72
Public Const LOGPIXELSY = 90 '縦方向の1論理インチあたりのピクセル数

Public Const HWND_TOP = 0
Public Const HWND_BOTTOM = 1
Public Const HWND_TOPMOST = (-1)
Public Const HWND_NOTOPMOST = (-2)
Public Const SWP_NOSIZE = &H1&
Public Const SWP_NOMOVE = &H2&
Public Const SWP_NOZORDER = &H4&
Public Const SWP_NOREDRAW = &H8&
Public Const SWP_NOACTIVATE = &H10&
Public Const SWP_FRAMECHANGED = &H20&
Public Const SWP_SHOWWINDOW = &H40&
Public Const SWP_HIDEWINDOW = &H80&
Public Const SWP_NOCOPYBITS = &H100&
Public Const SWP_NOOWNERZORDER = &H200&
Public Const SWP_DRAWFRAME = SWP_FRAMECHANGED
Public Const SWP_NOREPOSITION = SWP_NOOWNERZORDER


Public Type LOGFONT
 lfHeight     As Long 'キャラクタの高さ
 lfWidth      As Long 'キャラクタの幅(0 で標準的プロポーション)
 lfEscapement   As Long '相対的出力角度(単位:1/10度)
 lfOrientation   As Long '回転角度(単位:1/10度)
 lfWeight     As Long 'キャラクタの線幅(FW_BOLD, FW_NORMAL)
 lfItalic     As Byte 'イタリックの時 Chr$(1)、通常 Chr$(0)
 lfUnderline    As Byte 'アンダーライン付きの時 1
 lfStrikeOut    As Byte '横線付きの時 1
 lfCharSet     As Byte 'キャラクタセットの指定
 lfOutPrecision  As Byte '常に OUT_DEFAULT_PRECIS = 0
 lfClipPrecision  As Byte ' 同上
 lfQuality     As Byte 'DEFAULT_QUALITY, DRAFT_QUALITY, PROOF_QUALITY
 lfPitchAndFamily As Byte 'DEFAULT_PITCH,FIXED_PITCH, VAIABLE_PITCH
 lfFaceName    As String * LF_FACESIZE 'タイプフェース名
End Type

Public Declare Function GetDC Lib "user32" (ByVal hWnd As Long) As Long
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal Msg As Long, ByRef wParam As Long, ByRef lParam As Any) As Long
Public Declare Function GetObject Lib "gdi32" Alias "GetObjectA" (ByVal hObject As Long, ByVal nCount As Long, lpObject As Any) As Long
Public Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long, ByVal nIndex As Long) As Long

Public Declare Function CreateFontIndirect Lib "gdi32" Alias "CreateFontIndirectA" (lpLogFont As LOGFONT) As Long
Public Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
Public Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
Public Declare Function SetWindowsHookEx Lib "user32.dll" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hMod As Long, ByVal dwThreadId As Long) As Long
Public Declare Function UnhookWindowsHookEx Lib "user32.dll" (ByVal hHook As Long) As Long
Public Declare Function SetWindowPos Lib "user32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal uFlags As Long) As Long
Public Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hWnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
Public Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long


Private mHookProcWnd  As Long 'フックプロセスハンドル
Private mFontHandle   As Long '作成したフォントハンドル

Public Sub Main()
  Call myMsgBox("鈴木 宗○", vbOKCancel Or vbQuestion)
End Sub

'メッセージボックスの初期設定
Public Function myMsgBox( _
        inPrompt As String _
        , Optional inButtons As VbMsgBoxStyle = vbOKOnly _
        , Optional inTitle As String = "vs 辻本 清○" _
        , Optional inHelpFile _
        , Optional inContext _
        ) As VbMsgBoxResult
  'フック
  mHookProcWnd = SetWindowsHookEx(WH_CBT, AddressOf MsgBoxHookProc, App.hInstance, App.ThreadID)
  
  'メッセージボックスを呼ぶ
  myMsgBox = MsgBox(inPrompt, inButtons, inTitle, inHelpFile, inContext)
  
  'メッセージボックスで作成されたフォントを削除する
  Call delFont
End Function

'フック関数
Private Function MsgBoxHookProc _
    (ByVal nCode As Long, _
    ByVal wParam As Long, _
    ByVal lParam As Long) As Long
  
  Static staFlg  As Boolean 'ワーキングフラグ
  
  'システムがウィンドウをアクティブ化しようとしている
  If nCode = HCBT_ACTIVATE Then
    If staFlg Then
      Exit Function
    End If
    staFlg = True
    
    'フォントを設定する
    Call setFont(wParam, 30, MYB_TRUE, MYI_TRUE, MYU_TRUE, MYS_TRUE)
    
    'オブジェクトのリサイズ
    Call setResize(wParam)
    
    Call UnhookWindowsHookEx(mHookProcWnd)
    staFlg = False
  End If
  ' フック関数の継続を中止
  MsgBoxHookProc = False
End Function

Private Sub setFont( _
    inOwnerWnd As Long, _
    Optional ByVal inFontSize As Single = -1, _
    Optional ByVal inBold As MY_BOLD = MYB_FLASE, _
    Optional ByVal inItalic As MY_ITALIC = MYI_FLASE, _
    Optional ByVal inUnderLine As MY_UNDERLINE = MYU_FLASE, _
    Optional ByVal inStrikeOut As MY_STRINKEOUT = MYS_FLASE _
    )

  Dim udtLOGFONT As LOGFONT
  Dim lngDC    As Long
  Dim lngWk    As Long
  Dim lngMsgWnd  As Long 'メッセージボックスのメッセージ部分のハンドル
  
  
  'すでに作成済みのフォントを削除
  Call delFont
  
  'メッセージボックスの中の、メッセージ部分のハンドルを得る
  lngMsgWnd = getWndMsg(inOwnerWnd)
  
  'デバイスコンテキストを得る
  lngDC = GetDC(lngMsgWnd)
  
  '現在のフォントのハンドルを取得
  lngWk = SendMessage(lngMsgWnd, WM_GETFONT, 0, 0&) And &HFFFF&
  
  ' フォント属性を取得
  Call GetObject(lngWk, Len(udtLOGFONT), udtLOGFONT)
  
  '新しい設定を行う
  With udtLOGFONT
    'フォントサイズ/太字/斜体/下線/取消し線
    If inFontSize > 0 Then
      .lfHeight = inFontSize * (GetDeviceCaps(GetDC(inOwnerWnd), LOGPIXELSY) / POINT_PER_INCH) * (udtLOGFONT.lfHeight / Abs(udtLOGFONT.lfHeight))
    End If
    .lfWeight = inBold
    .lfItalic = inItalic
    .lfUnderline = inUnderLine
    .lfStrikeOut = inStrikeOut
  End With
  
  '論理フォントの作成
  mFontHandle = CreateFontIndirect(udtLOGFONT)
  'DCへの関連付け
  Call SelectObject(lngDC, mFontHandle)
  'フォントを指定
  Call SendMessage(ByVal lngMsgWnd, ByVal WM_SETFONT, ByVal mFontHandle, 0&)

End Sub

'フォントオブジェクトの削除
Private Sub delFont()
  If mFontHandle <> 0& Then
    Call DeleteObject(mFontHandle)
    mFontHandle = 0
  End If
End Sub

'メッセージボックスの中の、メッセージ部分のハンドルを得る
Private Function getWndMsg(inWnd As Long) As Long
  Dim lngWnd1 As Long
  Dim lngWnd2 As Long
  
  'メッセージボックスには「Static」クラスを持つオブジェクトが1個か2個ある
  '1個の時は メッセージ
  '2個の時は 最初のStaticはアイコン/次にメッセージ
  
  lngWnd1 = FindWindowEx(inWnd, 0&, "Static" & vbNullChar, vbNullString)
  lngWnd2 = FindWindowEx(inWnd, lngWnd1, "Static" & vbNullChar, vbNullString)
  
  '2個目が存在していたら2個目、そうじゃなけりゃ1個目のハンドルを返す
  getWndMsg = IIf(lngWnd2 <> 0&, lngWnd2, lngWnd1)
End Function

'オブジェクトのリサイズ
'(ここは作りこまないといけない。計算ロジック大変そう・・・・)
Private Function setResize(inWnd As Long)
  Dim lngWidth  As Long
  Dim lngHeight  As Long
  Dim lngWnd1   As Long
  Dim lngWnd2   As Long
  
  '本当はここで再配置ロジックを行う(ボタン/アイコン/メッセージ)の各ハンドルを得て、サイズを変更
  'ここに載っているのは、あくまでサンプルです
  'ボタン数が2個限定ですのでお間違いないように!!!!!!!!!!!!!!
  
  '画面サイズを取得
  lngWidth = (Screen.Width \ Screen.TwipsPerPixelX)
  lngHeight = (Screen.Height \ Screen.TwipsPerPixelY)
  
  'メッセージボックスを座標(0,0)へ表示/メッセージボックスを画面サイズに表示
  Call SetWindowPos(inWnd, 0, 0, 0, lngWidth, lngHeight, _
           SWP_NOZORDER Or SWP_NOACTIVATE)
  
  'メッセージ
  Call SetWindowPos(getWndMsg(inWnd), 0, 0, 0, lngWidth \ 2, lngHeight \ 2, _
           SWP_NOZORDER Or SWP_NOACTIVATE Or SWP_NOMOVE)
          
  'ボタン1(大きさそのまま/配置変更)
  lngWnd1 = FindWindowEx(inWnd, 0&, "Button" & vbNullChar, vbNullString)
  Call SetWindowPos(lngWnd1, 0, 0, lngHeight - 50, 0, 0, _
           SWP_NOZORDER Or SWP_NOACTIVATE Or SWP_NOSIZE)
  
  'ボタン2(大きさ変更/配置変更)
  lngWnd2 = FindWindowEx(inWnd, lngWnd1, "Button" & vbNullChar, vbNullString)
  Call SetWindowPos(lngWnd2, 0, lngWidth - 400, lngHeight - 500, 300, 300, _
           SWP_NOZORDER Or SWP_NOACTIVATE)
End Function

一応サンプルを作りました。
やってみて面白かったけど、やはりオリジナルを作ったほうがかなり楽だということを実感しました。

注意:
ここの掲示板は文字がずれるので、図形が壊れます。以下の文章をメモ帳などのテキストエディタにコピって読んでください。

・・・さて本題・・・


※メッセージボックスの構造
┏━━━━━━━━━━━━━━━━┓
┣━━━━━━━━━━━━━━━━┫
┃                ┃
┃ ┏━┓ ┏━━━━━━━━┓ ┃
┃ ┃I┃ ┃MSG_AREA┃ ┃
┃ ┗━┛ ┗━━━━━━━━┛ ┃
┃         ...続きを読む

QVBScriptから指定URLを開く方法

 ある特定のWebページをVBScriptから開きたいのですが方法が探せませんでした。VBScriptからWebページを開く方法、もしくはhttp putを行う方法を教えてください。よろしくお願いします。

Aベストアンサー

こんなので、どうでしょうか?

Set objIE = Wscript.CreateObject("InternetExplorer.Application")
objIE.Navigate2 "http://www.goo.ne.jp/"
objIE.Visible = TRUE
Set objIE =Nothing

Qvbsでからプログラムを、オプションを指定して起動したい。

vbsから、プログラムを実行する歳に、オプションを指定する方法を教えてください。

Firefoxを起動する際に以下のオプションをつけて実行したいのですが
上手くいきません。
(1)-new-tabオプション
(2)URL

===================================

Option Explicit
Dim objWshShell
Set objWshShell = WScript.CreateObject("WScript.Shell")
objWshShell.Run """c:\Program Files\Mozilla Firefox\firefox.exe"""
Set objWshShell = Nothing


Firefoxを起動するだけであれば上の記述でいけますが
(1)と(2)は
objWshShell.Run """c:\Program Files\Mozilla Firefox\firefox.exe"""
の後ろにどのように記述すればいいのでしょうか。

vbsから、プログラムを実行する歳に、オプションを指定する方法を教えてください。

Firefoxを起動する際に以下のオプションをつけて実行したいのですが
上手くいきません。
(1)-new-tabオプション
(2)URL

===================================

Option Explicit
Dim objWshShell
Set objWshShell = WScript.CreateObject("WScript.Shell")
objWshShell.Run """c:\Program Files\Mozilla Firefox\firefox.exe"""
Set objWshShell = Nothing


Firefoxを起動...続きを読む

Aベストアンサー

オプションやURLをすべてRunの第1引数で指定します。

objWshShell.Run """c:\Program Files\Mozilla Firefox\firefox.exe"" -new-tab http://www.google.co.jp"

Qダイアログにプレビュー表示

ダイアログに画像ファイルのプレビューを表示したいのです。
標準のダイアログではできないのでしょうか?
プレビュー機能を持ったダイアログが市販されていますが・・・
宜しくお願いします。

Aベストアンサー

訂正です。。。
※誤り
>        'ダミーに読み込む
>        On Error Resume Next
>        dmyPicture.Picture = LoadPicture(wkStr)
>        On Error GoTo 0
>        
>        '正常に読まれたか?
>        If dmyPicture.Picture = 0 Then
>          '異常読み込みなので、ファイルフルパス名記憶の破棄
>          dmyPicture.Tag = ""
>          GoTo PGMEND
>        Else
>          '正常に読み込まれたので、ファイルフルパス名を記憶しておく
>          dmyPicture.Tag = wkStr
>        End If


以上の部分を以下のように変更してください。
※正しい
        'ダミーに読み込む
        On Error Resume Next
        Err.Clear
        dmyPicture.Picture = LoadPicture(wkStr)
        
        '正常に読まれたか?
        If Err.Number = 0& Then
          '正常に読み込まれたので、ファイルフルパス名を記憶しておく
          dmyPicture.Tag = wkStr
        Else
          '異常読み込みなので、ファイルフルパス名記憶の破棄
          dmyPicture.Tag = ""
          GoTo PGMEND
        End If
        On Error GoTo 0

訂正です。。。
※誤り
>        'ダミーに読み込む
>        On Error Resume Next
>        dmyPicture.Picture = LoadPicture(wkStr)
>        On Error GoTo 0
>        
>        '正常に読まれたか?
>        If dmyPicture.Picture = 0 Then
>          '異常読み込みなので、ファイルフルパス名記憶の破棄
>          dmyPicture.Tag = ""
>          GoTo PGMEND
>        Else
>    ...続きを読む

QVBSで"をエスケープする文字は?

VBSで"をエスケープする文字はなんでしょうか?

Aベストアンサー

エスケープといった考えが VBSではなかったように思います

"をあらわすには "で括る必要が生じます
たとえば "abc" といった内容なら """abc""" といったリテラルになります
一番外側の "のペアが 文字列としての"になります

"ab"cが欲しいなら """ab""c"
a"bc"が欲しいなら "a""bc"""
a"b"cがほしいなら "a""b""c"
といった具合になります

QVBSで応答不要のメッセージボックスを表示したい

Kotori_Dと申します。

今回質問したいのは、VBScriptを使い、ある処理を行っている最中にメッセージボックスを表示させ、
操作をしないように呼びかけ、なおかつメッセージ表示中も処理が実行され続けるようにしたいのですが、その方法で困っています。

MsgBox("処理中です。操作しないでください。")
この場合、メッセージが出て、OKを押すまで保存は実行されません。

CreateObject("WScript.Shell").Popup "処理中です。操作しないでください。", 0, " 警告"
こちらでも、OKを押すまで処理は中断されます。
また、表示時間を指定すると、途中で消えてしまうので、役不足です。

私としては、メッセージは出たままで、処理を継続してほしいのですが、
何かよい方法はないでしょうか?

よろしくお願いします。

Aベストアンサー

http://blog.s21g.com/articles/1202

非同期でコマンドを発行すればいいと思います。
コマンド内容は、メッセージを表示するだけの実行ファイルを
用意。

QHTAで、こんなボタンが作りたい。

HTA(HTML Applications)で簡単な操作パネル的なものを作ろうと思っています。

イメージしているものは、
・『開始』ボタンを押下で外部ファイルa.vbsを実行し、ボタン上部のス   ペースに『稼動中』と表示。
・『停止』ボタンを押下で外部ファイルb.vbsを実行し、ボタン上部のス   ペースに『非稼動中』と表示。
・ボタンは1つで、始めは『開始』ボタンのみ。
 『開始』を押下すると『停止』に変わる。

という感じです。
 ボタン2つで片方をdisableでグレーアウトさせる、でも良いかと思っています。
 アドバイス等有りましたらお願い致します。贅沢を言わさせていただくと、具体的なコードと簡単で構わないので解説して頂けたら幸いです。


OS:Windows98

Aベストアンサー

私も勉強がてら作ってみました。Windows XP SP2で確認しました。
-----
<HTML>
<HTA:APPLICATION ID="oHTA" APPLICATIONNAME="easyPanel" SCROLL="no"
INNERBORDER="no" MAXIMIZEBUTTON="no" MINIMIZEBUTTON="no" SINGLEINSTANCE="yes" />
<HEAD>
<TITLE>easyPanel</TITLE>
<STYLE>
<!--
BODY
{
background-color: buttonface;
}
-->
</STYLE>
<SCRIPT>
var Wsh = new ActiveXObject("WScript.Shell");
// ボタンが押された
function buttonRun(){
if (window.form1.button1.value == "開始"){
form1.button1.value = "停止";
document.getElementById("label1").innerHTML = "稼動中";
Wsh.Popup ("a.vbs");
//Wsh.Run ("a.vbs");
}
else{
form1.button1.value = "開始";
document.getElementById("label1").innerHTML = "非稼動中";
Wsh.Popup ("b.vbs");
//Wsh.Run("b.vbs");
}
}
// フォームがロードされた
function Window_onLoad(){
window.resizeTo(150,120); // 好みで変更して下さい
window.moveTo(0,0);
}
</SCRIPT>
</HEAD>
<BODY onLoad="Window_onLoad()">
<SPAN id="label1" >非稼動中</SPAN>
<FORM name="form1">
<INPUT type="button" name="button1" value="開始" onClick="buttonRun()">
</FORM>
</BODY></HTML>
-----

私も勉強がてら作ってみました。Windows XP SP2で確認しました。
-----
<HTML>
<HTA:APPLICATION ID="oHTA" APPLICATIONNAME="easyPanel" SCROLL="no"
INNERBORDER="no" MAXIMIZEBUTTON="no" MINIMIZEBUTTON="no" SINGLEINSTANCE="yes" />
<HEAD>
<TITLE>easyPanel</TITLE>
<STYLE>
<!--
BODY
{
background-color: buttonface;
}
-->
</STYLE>
<SCRIPT>
var Wsh = new ActiveXObject("WScript.Shell");
// ボタンが押された
function buttonRun(){
if (window.form1.button1.value == "開...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報