UDLファイルをVBから呼び出すには? Part3


Hide  2005-05-24 16:21:24  No: 121893  IP: [192.*.*.*]

魔界の仮面弁士殿  皆様  こんにちは。Hideです。

また質問をさせて頂きます。

デスクトップ上にあるUDLファイル(Connect.udl)の設定画面を呼び出して、
(C:\Documents and Settings\muser\デスクトップ\Connect.udl)
そのUDLを設定内容を編集して保存する場合、どのようにすればよろしいのでしょうか?

ご教示宜しくお願いします。

OS:Windows2000
VB6 SP5

編集 削除
特攻隊長まるるう  2005-05-24 16:38:09  No: 121894  IP: [192.*.*.*]

http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200505/05050089.txt
既に魔界の仮面弁士さんが回答してくれているように見えますが?

編集 削除
もげ  2005-05-24 17:14:46  No: 121895  IP: [192.*.*.*]

http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200505/05050089.txt
>UDLファイルの編集だけなら、それを関連付け起動で呼び出せば良いかと。
とあるように、
ShellExecute(API)等でConnect.udlを関連付け起動してあげればいいんでは?
ShellExecuteの使い方はこのサイトにありますよん。
http://madia.world.coocan.jp/vb/API/ShellExecute.htm

編集 削除
Hie  2005-05-24 21:55:18  No: 121896  IP: [192.*.*.*]

特攻隊長まるるうさん  もげさん
早速のご返答ありがとうございます。

私の説明が足らず、申し訳ありません。
魔界の仮面弁士さんから頂いたコードで指定先のudlファイルを呼び出して、
その設定情報を利用するだけなら頂いたコードでいいのですが、
リンク先を変更して、再度指定先のudlファイルを呼び出しても、変更されて
おらず、前のリンク先の状態です。
変更した内容を保存すること  という意味で編集すると書きました。
編集して保存することは可能なのでしょうか?

よろしくお願いします。

編集 削除
もげ  2005-05-25 08:42:22  No: 121897  IP: [192.*.*.*]

>変更した内容を保存すること  という意味で編集すると書きました。

説明に、「誰が(何が)」が抜けてて解釈が分かれますが、
その編集操作を行うのは、人ですか?それともプログラムですか?
UDLファイルをダブルクリックして、それを人が目視リンク先を直す
ことを想定して、「VBからUDL設定画面を表示させたい」
なら、関連付け起動案でOKです。

#って試せばわかるのに、コピペして動くコードを与えられるまで
#口をあけて待ってるつもりですかな?
#(そうじゃないなら工夫の痕跡を示しながらスレッドを続けないと貴殿が損をすると思う)

編集 削除
もげ  2005-05-25 10:18:47  No: 121898  IP: [192.*.*.*]

'興味があったので作ってみた(後進の為になればと思う  ツッコミ歓迎)
'魔界の仮面弁士 殿のコードを応用したもの
Function EditUDL(strEditFile As String)
Dim Cn As ADODB.Connection
Dim Stm As ADODB.Stream
Dim boolRC As Boolean
Dim fso As Object

    Set fso = CreateObject("Scripting.FileSystemObject")
    If fso.fileexists(strEditFile) = False Then
        Exit Function
    End If
    Set Stm = New ADODB.Stream
    Stm.Open
    Stm.LoadFromFile strEditFile
    Stm.Position = 128
    Set Cn = New ADODB.Connection
    Cn.ConnectionString = Stm.ReadText(adReadLine)
    Dim DataLnk As MSDASC.IDataSourceLocator
    Set DataLnk = New DataLinks
    boolRC = DataLnk.PromptEdit(Cn)
    If boolRC = False Then ' cancel
    Else
        MsgBox Cn.ConnectionString
        Stm.Position = 128

        Stm.WriteText Cn.ConnectionString
        Stm.WriteText vbCrLf
        Stm.SetEOS '文字列が短くなるように修正すると前の文字列が残ってしまうのでここでEOSにする
        Stm.SaveToFile strEditFile, adSaveCreateOverWrite
        Set DataLnk = Nothing
    End If
    Set Cn = Nothing
    Stm.Close
    Set Stm = Nothing
End Function

編集 削除
ぺがらぼ  URL  2005-05-25 11:16:23  No: 121899  IP: [192.*.*.*]

こんにちは、ぺがらぼ です。

そのUDLを設定内容を編集して保存する場合、どのようにすればよろしいのでしょうか?
実は、このudlファイル、iniファイルの構造とよく似ているのに気が付きましたか?テキストエディタやメモ帖で開いてみるとわかると思います。
これを踏まえれば、iniファイルに書き込む方法で、情報保存する事も可能です。
ただ、パラメータが多いので、お勧めはできませんが...

◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
ぺがらぼ
- Microsoft MVP for Visual Basic (2005/04-2006/03)
- INETA Japan Member
- PASSJ Member
- .NET/C# Group Member
  HOMEPAGE : http://pegalabo.net/
  MyBlog : http://www.ailight.jp/blog/pegalabo/
◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆

編集 削除
Hide  2005-05-25 11:35:38  No: 121900  IP: [192.*.*.*]

もげさん、魔界の仮面弁士さん  皆様  Hideです。

いろいろとご教示して頂き、ありがとうございました。
Data Linksでgoogleを検索していたので、ADODB.Streamを見落としてしまっていました。
Data Linksのあるメソッドを利用して、保存できるものだと勘違いしておりました。
(そのようなメソッドはありませんし、見つかるはずもありませんが。。。)

>Stm.WriteText Cn.ConnectionString
>Stm.WriteText vbCrLf
>Stm.SetEOS '文字列が短くなるように修正すると前の文字列が残ってしまうのでここでEOSにする
>Stm.SaveToFile strEditFile, adSaveCreateOverWrite

このようにコーディングするのだと教えて頂き、ありがとうござました。
頂いたコーディングで、UDL設定画面の編集操作を行うのは、人で、修正し、
再度UDL設定画面を呼び出すと編集内容が反映されていました。

以前にかんさんという方が、VBA  バイナリのデータを1byteずつファイルに書き出すには?(ADO使用)でADODB.Streamを含めた内容で投稿されていました。

URL:http://madia.world.coocan.jp/vb/vb_bbs/200311_03110051.html

microsoft.comにも関連する内容のことがありました。

http://support.microsoft.com/default.aspx?scid=kb;ja;258038

ご指摘の通り、これからは工夫の痕跡を示しながらしていこうと思います。
いろいろとありがとうございました。
今度とも宜しくお願いします。

編集 削除
魔界の仮面弁士  2005-05-25 12:02:59  No: 121901  IP: [192.*.*.*]

> これを踏まえれば、iniファイルに書き込む方法で、情報保存する事も可能です。
その考え方は危険かと。>ぺがらぼさん
udlファイルとiniファイルでは、ファイルの文字コードが異なりますし。

編集 削除