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

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

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

全過去ログを検索

<< 0 >>
■23563  Re[2]: C#によるXML読込み
□投稿者/ Bianchi -(2008/08/18(Mon) 17:20:00)
    2008/08/18(Mon) 17:54:00 編集(投稿者)

    魔界の仮面弁士さんのコードを参考に作成してみました。
    そしたら、うまく動きました。有難うございます。
記事No.23343 のレス / END /過去ログ44より / 関連記事表示
削除チェック/

■27906  Re[5]: VB6のコードをC#に書き換えるには。
□投稿者/ みきぬ -(2008/11/17(Mon) 15:52:49)
    > 減算の計算で「-」になる計算をしたら、数字の前に
    > 「-」がくるのではなく、数字の後ろに「-」が来てしまうので、

    そういう電卓もあるから別にいいじゃん…だめ?(・ω・)

    # いや加工するのはいいんだけど、そこからさらに計算しても果たして大丈夫なのだろうかという疑問が
記事No.27767 のレス /過去ログ51より / 関連記事表示
削除チェック/

■29682  Re[2]: PDFファイルの文字列について
□投稿者/ Kei -(2008/12/12(Fri) 11:06:44)
    No29678 (みきぬ さん) に返信

    早速のお返事ありがとうございます!

    AdobeのSDKを使えばPDF操作の多くは簡単に実現できるんですよねぇ。
    ただ、それだとイマイチ勉強としてどうかなと(笑)
    今まで基本的にVBAの開発がほとんどで、DB操作とかはそれなりにやってきたんですが、バイナリを扱うとかメモリを扱うっていう視点がなかったんですよ。
    だから今回はVCを通じてそういう勉強もしたいから出来ればSDK以外の方法があればと思ってます。
    自分としてはAdobeのSDKは最終的な参考資料として、自分が作ったロジックと照らし合わせたいと思います。
記事No.29674 のレス /過去ログ53より / 関連記事表示
削除チェック/

■67659  Re[5]: コマンドライン引数を使った場合の文字化け
□投稿者/ Jitta -(2013/08/21(Wed) 22:07:56)
>
    No67658 (επιστημη さん) に返信
    >>#ifdef _UNICODE
    >>#define tcout wcout
    >>#else
    >>#define tcout cout
    >>#endif
    >
    > #defineが気に入らんヒトには:
    >
    > namespace std {
    > basic_ostream<_TCHAR>& tcout =
    > #ifdef _UNICODE
    > wcout;
    > #else
    > cout;
    > #endif
    > }

    やっぱり、ここは定義しなきゃいけないのね。TCHAR.H みたいなのは用意されてないのね。。。
記事No.67643 のレス /過去ログ114より / 関連記事表示
削除チェック/

■80843  Re[1]: TableLayoutPanel 内でのD&D
□投稿者/ Azulean -(2016/08/13(Sat) 21:14:36)
    No80842 (tata さん) に返信
    > Private Sub TableLayoutPanel1_DragEnter(ByVal sender As Object, ByVal e As DragEventArgs) Handles TableLayoutPanel1.DragEnter
    (略)
    > Private Sub TableLayoutPanel1_DragDrop(ByVal sender As Object, ByVal e As DragEventArgs) Handles TableLayoutPanel1.DragDrop

    TableLayoutPanel に入っていても、ListBox は ListBox ですから、ListBox1 とか ListBox2 の DragEnter や DragDrop に対して Handles で結びつけてください。
    今のコードは TableLayoutPanel に対するドラッグ&ドロップ処理になってしまっています。
記事No.80842 のレス /過去ログ137より / 関連記事表示
削除チェック/

■90476  Re[4]: AddHandler Eventの別スレッドについて
□投稿者/ TanuTanu -(2019/03/13(Wed) 16:55:51)
    PANG2 様

    気に留めて頂きありがとうございます。
    内容を整理し改めてPANG2様にご教授頂いた下記コードの方法で出来るか試しましたが、
    VB.NETを触り始めて日が浅い事、小生の知識が乏しい故にVB.NETへの変換が出来ませんでした。
    又、既に表示されたIEを制御しているのでGetIEDocumentを使用しておりますが、
    webBrowser1の部分をどのように改造すれば良いのか、+= delegateの部位をどのように
    改造すれば良いのかも解らず心苦しいばかりでございます。

    ご質問の件ですがCのjavascriptによる擬似モーダルダイアログだと思います。
    onclickイベント=自作onclickイベント+元のonclickイベントにする事が目的です。

    何卒、ご教授賜りたく存じます。

    string script = ((dynamic)button.DomElement).attributes("onclick").value; //onclickイベントのスクリプト
    button.SetAttribute("onclick", "");//onclickイベントをクリア
    button.Click += delegate {
    MessageBox.Show("hello2");
    webBrowser1.Navigate("javascript:" + script);//元のonclickイベントを実行
記事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より / 関連記事表示
削除チェック/

■90492  Re[5]: AddHandler Eventの別スレッドについて
□投稿者/ PANG2 -(2019/03/14(Thu) 18:59:01)
    2019/03/14(Thu) 18:59:46 編集(投稿者)

    No90476 (TanuTanu さん) に返信
    > ご質問の件ですがCのjavascriptによる擬似モーダルダイアログだと思います。

    jQueryの疑似ダイアログでしょうか?
    ボタンのonclickもjQueryで実装しているなら難しいと思う。


    WebBrowser上にダイアログが出現するのをtimerで監視するサンプル

    private void timer1_Tick(object sender, EventArgs e)
    {
    dynamic doc = webBrowser1.Document.DomDocument;
    dynamic titles = doc.getElementsByClassName("ui-dialog-title");
    foreach (dynamic title in titles) {
    if (title.innerText == "テストダイアログ1") {
    foreach (dynamic btn in title.parentnode.parentnode.getElementsByTagName("button")) {
    string s = btn.innerText;
    if (s.Contains("確認"))
    btn.click();
    }
    }
    }
    }
記事No.90434 のレス /過去ログ156より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -