C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

全過去ログを検索

<< 0 >>
■5681  Re[4]: CSVデータをクライアントからインポート
□投稿者/ ちゃっぴ -(2007/07/20(Fri) 13:12:51)
>
    というか、debug 時くらいは、例外握りつぶすのやめましょう。
記事No.5644 のレス /過去ログ16より / 関連記事表示
削除チェック/

■7469  Re[1]: WebbrowserコントロールとProxy認証
□投稿者/ 渋木宏明(ひどり) -(2007/09/06(Thu) 12:01:57)
>
    > なおプログラム上でインターネット接続を利用するのは
    >
    > System.Net.WebClient wc = new System.Net.WebClient();
    > wc.DownloadFile("http://**);
    > という部分と、あとはWebBrowserコントロール経由です。

    であれば、どっちもデフォルトではコントロールパネルの「インターネット オプション」の Proxy 設定を使うはずなので、特に問題はないはずです。

    すぐに思いつくNGケースは、そのユーザの人が「インターネット オプション」で Proxy 設定をしてなくて、毎回 id, passwd を手打ちしている、というパターンです。
    この場合、WebClient を使っているトコはこけちゃいますね。

    どういう局面(=WebBrowser 使ってるとこなのか、WebClient 使っているとこなのか等)で 407 が出るのか、もうちっと絞込みが必要かと。
記事No.7463 のレス /過去ログ19より / 関連記事表示
削除チェック/

■21425  Re[7]: 命名規則やモジュール構成
□投稿者/ オガシン -(2008/07/01(Tue) 18:32:52)
    ロックさん 返信ありがとうございます。

    >>自分の所は、コントロールの名前が常にtextBox1、textBox2、textBox3・・・・
    >>っていう感じなんで、作るときはコピーして数字だけ書き換えて・・っで楽なんですが
    >>メンテする時、textBox1がアレで2がコレでとワンクッション脳内変換が入るから
    >>イラっとします。
    >>
    >>コントロールに固有の名称を付けない命名規約なんて不便ですよ!

    苦労されてますね(苦笑
    以前のプロジェクトではtxt○○Nameとかだったのでまだ良いほうだったと思います。
    #上記の書き方はまだ賛否が分かれるところでしょうか

    今回こそはVBはだれでもできるじゃん?と言われるようなことはしたくない!
    と思ってあれこれ調べてます。

    #Javaやってる人からは俺たちのほうがプログラム組めるんだぜみたいな空気を感じますorz
    #私も愚痴になっちゃいました(汗
記事No.21355 のレス /過去ログ41より / 関連記事表示
削除チェック/

■29683  Re[5]: asp.netのコーディング規約
□投稿者/ やじゅ -(2008/12/12(Fri) 11:09:30)
>
記事No.29660 のレス /過去ログ53より / 関連記事表示
削除チェック/

■54293  Re[5]: VB6からVC++6作成DLL呼出しについて
□投稿者/ やじゅ(本物) -(2010/10/13(Wed) 02:32:54)
>
    2010/10/13(Wed) 02:48:50 編集(投稿者)

    削除します。

記事No.54271 のレス /過去ログ91より / 関連記事表示
削除チェック/

■81803  Re[1]: データベースからのデータ読込
□投稿者/ 魔界の仮面弁士 -(2016/11/15(Tue) 15:14:37)
    No81800 (夜叉丸 さん) に返信
    > Main のデータにSub を JOIN して以下のデータを取得します。

    サーバー側に再問い合わせしたり、LINQ を使ってみるなど、
    やり方はいろいろと考えられますが、現時点で
    Main / Sub のデータを既に DataSet に読み込んでいるならば、
    一つの DataSet 上に DataRelation を貼っておき、
    Sub 側に「親テーブルの NUM 列」を式列として追加するのが
    手っ取り早い気がします。



    // 一つの DataSet 内に二つのDataTable
    var ds = new DataSet();
    var tblM = ds.Tables.Add("dbo.Main");
    var tblS = ds.Tables.Add("dbo.Sub");

    // このあたりはテーブル定義なので、
    // 型付きDataSet を使うのならば意識しなくてOK
    tblM.PrimaryKey = new DataColumn[] { tblM.Columns.Add("NAME") };
    tblM.Columns.Add("NUM", typeof(decimal));

    tblS.Columns.Add("NAME");
    tblS.PrimaryKey = new DataColumn[] { tblS.Columns.Add("SUBNAME") };

    // とりあえず実験用データの登録
    tblM.Rows.Add("A", 1m);
    tblM.Rows.Add("B", 2m);
    tblM.AcceptChanges();
    tblS.Rows.Add("A", "a1");
    tblS.Rows.Add("A", "a2");
    tblS.Rows.Add("B", "b1");
    tblS.Rows.Add("B", "b2");
    tblS.AcceptChanges();

    // ここから本題
    // JOIN 操作のために式列(Expression Column)を利用してみます
    ds.Relations.Add("Main_Sub", tblM.Columns["NAME"], tblS.Columns["NAME"]);
    tblS.Columns.Add("NUM", tblM.Columns["NUM"].DataType, "Parent.NUM");


    これで、tblS 上に、NAME, SUBNAME, NUM の 3 列が構成されます。
    (DataRelation は、型付き DataSet 上であらかじめ構築しておくこともできます)
記事No.81800 のレス /過去ログ139より / 関連記事表示
削除チェック/

■90477  Re[5]: AddHandler Eventの別スレッドについて
□投稿者/ TanuTanu -(2019/03/13(Wed) 20:27:51)
    魔界の仮面弁士 様

    大変お世話になっております。
    ご教授頂いた方法で少し前進致しました。

    FindWindowExWの値は0ですが、FindWindowではハンドル値取得できました。

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

    PWnd1 = FindWindowExW(IntPtr.Zero, IntPtr.Zero, "TabThumbnailWindow", "JavaScript テスト - Internet Explorer")
    PWnd2 = FindWindow("TabThumbnailWindow", "JavaScript テスト - Internet Explorer")

    Debug.WriteLine(PWnd1)
    Debug.WriteLine(PWnd2)

    Dim o As Object = GetIEDocument(PWnd2) ' No90411 を参照
    doc = DirectCast(o, mshtml.HTMLDocument)
    yahooButton = DirectCast(doc.all.item("yahoo"), mshtml.IHTMLElement)
    Event1 = DirectCast(yahooButton, mshtml.HTMLInputTextElementEvents2_Event)
    AddHandler Event1.onclick, AddressOf WebDisp_click

    End Sub

    その結果、yahooButton = DirectCast(doc.all.item("yahoo"), mshtml.IHTMLElement)の行にて下記エラーが発生致しました。

     エラー:System.NullReferenceException
    HResult=0x80004003
    Message=オブジェクト参照がオブジェクト インスタンスに設定されていません。

    ******************************

     現在、取り組んでいる案件は、下記の通りです。
     
     WEBページ・・・CreateObject("Shell.Application").Windowsで対応しております。
      ↓
     上記WEBページから派生したWEBページダイアログ ・・・ GetIEDocument で対応(現在、ここのボタンクリックのイベントを対応しております。)
      ↓
     上記WEBページダイアログから派生したWEBページダイアログ ・・・ GetIEDocument で対応

    何卒、ご教授の程、宜しくお願いいたします。
記事No.90434 のレス /過去ログ156より / 関連記事表示
削除チェック/

■90511  Re[6]: AddHandler Eventの別スレッドについて
□投稿者/ 魔界の仮面弁士 -(2019/03/15(Fri) 11:55:19)
    2019/03/15(Fri) 12:07:39 編集(投稿者)

    解決済みで閉じられているので、いちおうチェックは付けた状態に戻しておきます。


    No90477 (TanuTanu さん) に返信
    > その結果、yahooButton = DirectCast(doc.all.item("yahoo"), mshtml.IHTMLElement)の行にて下記エラーが発生致しました。

    その行のどの部分に問題があるのかを確認してみてください。

    NullReferenceException とは、インスタンスが空の時、すなわち
    オブジェクトが Nothing である場合に、
    そのメンバーを操作しようとして発生する例外ですよね。


    If doc Is Nothing Then
     MsgBox("doc が空だった")
    ElseIf doc.all Is Nothing Then
     MsgBox("doc.all が空だった")
    ElseIf doc.all.item("yahoo") Is Nothing Then
     MsgBox("doc.all.item(""yahoo"") が空だった")
    Else
     MsgBox("いずれも空ではなさそう")
     yahooButton = DirectCast(doc.all.item("yahoo"), mshtml.IHTMLElement)
    End If




    > FindWindowExWの値は0ですが、FindWindowではハンドル値取得できました。
    > PWnd1 = FindWindowExW(IntPtr.Zero, IntPtr.Zero, "TabThumbnailWindow", "JavaScript テスト - Internet Explorer")

    示されているのが結果だけで、要因となりうる情報が隠されたままなので、修正すべき箇所を指摘できないです。(^^;

    あえてもう一度質問させていただきます。
    『その API (FindWindowEx および FindWindowExW) の宣言部はどうなっていますか?』( No90475 の再掲 )


    少なくとも当方では、下記の API 宣言で取得できています。

    ' Imports System.Runtime.InteropServices

    ' === 案1 ===
    <DllImport("user32", CharSet:=CharSet.Unicode, SetLastError:=True)>
    Private Shared Function FindWindowExW(hwndParent As IntPtr, hwndChildAfter As IntPtr, lpszClass As String, lpszWindow As String) As IntPtr
    End Function

    ' === 案2 ===
    <DllImport("user32", CharSet:=CharSet.Auto, SetLastError:=True)>
    Private Shared Function FindWindowEx(hwndParent As IntPtr, hwndChildAfter As IntPtr, lpszClass As String, lpszWindow As String) As IntPtr
    End Function

    ' === 案3 ===
    Private Declare Unicode Function FindWindowExW Lib "user32" (hwndParent As IntPtr, hwndChildAfter As IntPtr, <MarshalAs(UnmanagedType.LPTStr)> lpszClass As String, <MarshalAs(UnmanagedType.LPTStr)> lpszWindow As String) As IntPtr

    ' === 案4 ===
    Private Declare Auto Function FindWindowEx Lib "user32" (hwndParent As IntPtr, hwndChildAfter As IntPtr, <MarshalAs(UnmanagedType.LPTStr)> lpszClass As String, <MarshalAs(UnmanagedType.LPTStr)> lpszWindow As String) As IntPtr




    宣言が間違っていて、IntPtr.Zero が返却されてしまうパターン。

    ' === 没1 ===
    <DllImport("user32", EntryPoint:="FindWindowExW", SetLastError:=True)>
    Private Shared Function FindWindowEx(hwndParent As IntPtr, hwndChildAfter As IntPtr, lpszClass As String, lpszWindow As String) As IntPtr
    End Function

    ' === 没2 ===
    <DllImport("user32", SetLastError:=True)>
    Private Shared Function FindWindowExW(hwndParent As IntPtr, hwndChildAfter As IntPtr, lpszClass As String, lpszWindow As String) As IntPtr
    End Function

    ' === 没3 ===
    Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExW" (hwndParent As IntPtr, hwndChildAfter As IntPtr, lpszClass As String, lpszWindow As String) As IntPtr



    正しい宣言ではないが、一応呼び出せてしまうパターン。

    ' === 非推奨1 ===
    Private Declare Unicode Function FindWindowExW Lib "user32" (hwndParent As IntPtr, hwndChildAfter As IntPtr, lpszClass As String, lpszWindow As String) As IntPtr

    ' === 非推奨2 ===
    Private Declare Unicode Function FindWindowEx Lib "user32" Alias "FindWindowExW" (hwndParent As IntPtr, hwndChildAfter As IntPtr, lpszClass As String, lpszWindow As String) As IntPtr



    >  WEBページ・・・CreateObject("Shell.Application").Windowsで対応しております。
    これを用いている部分のコードも見せていただけないでしょうか。

    SHDocVw.ShellWindows を宣言しておきながら、FindWindowEx API や、GetIEDocument までも
    追加で呼び出している理由が、どうしても分からなかったのです。

    No90463 の発言より、「objIE.LocationName」を利用しているであろうことは推察できましたが、
    目的は LocationName プロパティでウィンドウのタイトルを得ることだけなのでしょうか。
    あるいは HWND プロパティからウィンドウハンドルも得ているとか?

    objIE.Document プロパティを通じて HTMLDocument を得ることができるはずなので、
    わざわざ GetIEDocument を呼び出す必要性は無いと思っています。( No90469 で指摘 )

    (例)
    http://jumbofoot.cocolog-nifty.com/yass_vbnet_tips/2007/02/shellhtmldocume_f1cd.html


    WM_HTML_GETOBJECT でないと取得できない相手の場合は、API 宣言が必要になりますが、
    その場合、今度は CreateObject("Shell.Application").Window を使う意味が分からない…。



    >  上記WEBページから派生したWEBページダイアログ ・・・ GetIEDocument で対応(現在、ここのボタンクリックのイベントを対応しております。)

    ここでいう『派生』とは何を示していますか? ページ遷移の事でしょうか?

    ページが遷移したのであれば、以前の HTMLDocument はもう使えないので、
    読み込みが完了したことを通知するための DocumentComplete イベントにて、
    イベント引数 pDisp の Document プロパティを受け取るようにします。
    (フレームを持つページの場合は、各フレームごとに発生することに注意)

    あるいは、ターゲットとなる InternetExplorer オブジェクト(IWebBrowser2)を保持しておいて、
    その Document プロパティを取得しなおすという方法も使えますが、いずれにせよ、
    読み込みが完了する前に GetIEDocument なり Document プロパティなりで
    HTMLDocument を得ていた場合、DOM が不完全な状態になっていることがあります。

    なので、取得した HTMLDocument が、目的のページの内容を指しているかを
    確認しておくことも重要です。(これも No90469 で指摘 )


    それに、FindWindowEx を使うにしても、その使い方が不自然に思えます。
    そもそも "TabThumbnailWindow" クラスを探している理由は何でしょうか?
    先の GetIEDocument を使うことが目的なら、探すべきウィンドウは
    "Internet Explorer_Server" クラスのウィンドウ(またはその親ウィンドウ)の
    ハンドルであるはずですよね。


    また、「WEBページダイアログ」とは何を指していますか?
    キャプションが "JavaScript テスト - Internet Explorer" となる、 No90454
    https://www.javadrive.jp/javascript/event/sample2_1.html だとすれば、
    そもそもダイアログは存在していません。
    別のページが対象なのかもしれませんが、その場合は、doc.all.item("yahoo") は存在しないかもしれませんし。

    No90476 では「javascriptによる擬似モーダルダイアログ『だと思う』」とお答えいただきましたが、
    それが具体的になんであるのか(たとえば jQuery の colorbox とか)や、
    イベント割り当てが onclick なのかそれ以外なのかもはっきりしないままです。
記事No.90434 のレス / END /過去ログ156より / 関連記事表示
削除チェック/

■92594  Re[1]: レジストリ書込・参照時の「WOW6432Node」について
□投稿者/ とっちゃん -(2019/10/09(Wed) 12:07:57)
    No92591 (鯖江ミナ さん) に返信

    > これらは何らかのルールに則って処理がなされているのでしょうか?
    > (インストールの場合は特別に「WOW6432Node」が考慮される、とか)
    >
    HKEY_LOCAL_MACHINE\Software\ キーは、32bit/64bit で専用のキーを見るように
    OS側で自動的にリダイレクト(参照先の変更)が行われるようになっています。


    > また、例えば、ソフト(VB)側で、
    > 「HKEY_CURRENT_USER\Software\(ソフト名)」キーがなかったら
    > 「HKEY_CURRENT_USER\Software\WOW6432Node\(ソフト名)」キーを参照する
    > (あるいは逆)ようなことは簡単にできるのでしょうか?

    一方、HKEY_CURRENT_USER\Software\ キーはリダイレクトの対象にはなっていないため
    こちらは、32bitアプリでも 64bitアプリでも同じレジストリが参照されます。

    そのため、アプリが32bitであろうが、64bitであろうが、HKEY_CURRENT_USER\Software キーに関しては
    切り替えるような仕組みはありません。
    アプリ側で32/64で別々のキーとしたいのなら、別の方法を考える必要があります。

    例えば、
    HKEY_CURRENT_USER\Sowtware\(ソフト名)\x86\...
    HKEY_CURRENT_USER\Sowtware\(ソフト名)\x64\...
    と、キーアクセスのところに32/64の区別を行うようなキーを挟む。

    というように、独自に対応する必要があります。

    HKEY_CURRENT_USER\Software\WOW6432Node\(ソフト名)\ とする場合でも自分で環境を見て
    レジストリキー文字列を組み立てる必要があります。
記事No.92591 のレス /過去ログ160より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -