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

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

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

全過去ログを検索

<< 0 >>
■29670  Re[3]: Listboxの表示
□投稿者/ .SHO -(2008/12/12(Fri) 10:32:49)
    No29669 (nori さん) に返信
    > For i = 0 To 50

    > 例えば、1〜50の数字があって30行表示なので
    > 20から50が表示されるって感じです。

    For i=20 To 50
記事No.29648 のレス /過去ログ53より / 関連記事表示
削除チェック/

■29671  Re[4]: asp.netのコーディング規約
□投稿者/ はつね -(2008/12/12(Fri) 10:33:08)
>
    No29667 (aosiro さん) に返信
    > やはり、いい開発規約を作ろうとすると、試行錯誤
    > しなければいけないのでしょうね。

    試行錯誤というよりも正式公開されている既存(未完成の試行錯誤のではなく)のものを
    ちゃんと熟読して、自分の状況に合わせてチョイスや加筆修正するのがよいですね。

    VB.NETにしても、HTMLなどにしても、世の中にコーディング規約が発表されていない訳で
    はなく、すでに存在(VB.NETはMS自身からも)するので、それらを読まずにゼロからつくる
    のは大変だと思います。
記事No.29660 のレス /過去ログ53より / 関連記事表示
削除チェック/

■85155  C#顔認証プログラム
□投稿者/ 太郎 -(2017/09/14(Thu) 21:00:55)

    分類:[C#] 

    http://whoopsidaisies.hatenablog.com/entry/2013/12/01/095932
    ↑参考にさせていただいたサイト
    サイトどうりにC#でプログラムを作っているのですが
    var cascadeFace = Accord.Vision.Detection.Cascades.FaceHaarCascade.FromXml(@"C:\dev\opencv\sdk\etc\haarcascades\haarcascade_frontalface_default.xml");
    ここのカスケードでSystem.InvalidOperationException が発生しました
    メソッドは、ノード型 None ではサポートされません。 行 33315、位置 1 です。
    とバンドルされない例外とメッセージが表示されます。
    どうやったらいいでしょうか?
親記事 /過去ログ145より / 関連記事表示
削除チェック/

■87647  Re[4]: Whereのフィルタ条件にListを使いたい
□投稿者/ ちゅん -(2018/06/15(Fri) 15:51:55)
    せば 様
    回答ありがとうございます。

    nullの判定を左に持ってくれば良いのですね。
    今日は試す暇がないので明日改めて確認します。
記事No.87637 のレス /過去ログ150より / 関連記事表示
削除チェック/

■89642  Re[11]: Excelオブジェクトに関して(VB6)
□投稿者/ k3user -(2018/12/12(Wed) 13:54:15)
    Excelファイルが破損している原因を調査しましたが
    今の所、原因はつかめていません。

    ・オプション設定の再度確認
    ・ファイルを修復してオープン
    ・すべてのセルの書式を確認
    ・不要な数式・マクロが動いていないか?
    ・名前管理の確認

    根本的な解決とはなっていませんが
    Excelファイルを新たに作成する方法を取りました。

    よって今回の質問を解決済みとさせていただきます。
    回答をいただいた皆様、この度は誠にありがとうございました。
記事No.89591 のレス / END /過去ログ154より / 関連記事表示
削除チェック/

■90455  Re[4]: AddHandler Eventの別スレッドについて
□投稿者/ 魔界の仮面弁士 -(2019/03/12(Tue) 14:31:26)
    2019/03/12(Tue) 14:41:42 編集(投稿者)

    No90452 (TanuTanu さん) に返信
    > 魔界の仮面弁士 様、Azulean 様の下記コメにもあるようにその方法しか残されていないのかもしれませんね。

    スレッド管理の話とイベントの発生順の話は無関係ですよね…?


    質問内容は「イベントの発生順を変更したい」ということではないのでしょうか。

    それともイベントの発生順は JavaScript → VB の順番のままで構わないので、
    VB 側のイベント処理を「別スレッドで処理させたい」という質問なのでしょうか。



    No90454 (魔界の仮面弁士 ) に追記
    > また、イベントは登録した順に割り当てられるものであり、発生順を変えることは基本的にできません。
    >
    > onclick だけなら、イベントの付け外しも比較的容易なのですが、

    とりあえず
     https://www.javadrive.jp/javascript/event/sample2_1.html
    に対するサンプル。


    Option Strict On
    Public Class Form1
     Private doc As mshtml.HTMLDocument
     Private yahooButton As mshtml.IHTMLElement
     Private Event1 As mshtml.HTMLInputTextElementEvents2_Event

     Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
      Dim o As Object = GetIEDocument( ターゲットのHWND ) ' 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

     Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
      yahooButton.click()
     End Sub

     Private Function WebDisp_click(ByVal e As mshtml.IHTMLEventObj) As Boolean
      MsgBox("webDisp_onclick", MsgBoxStyle.SystemModal)
      Return True
     End Function
    End Class


    この場合、input type="button" に対する onclick が割り当て済みなので、
    その後で VB からイベントにアタッチしても、JavaScript 側の処理が先に実行されます。
    そのため VB の WebDisp_click が呼ばれるのは、Web ページダイアログが閉じられた後になります。


    上記の順番を入れ替えて、VB 側で捕らえてから JavaScript 側の処理を実行させるようにするなら、たとえばこんな感じ。


    Option Strict On
    Public Class Form1
     Private doc As mshtml.HTMLDocument
     Private yahooButton As mshtml.IHTMLElement
     Private Event1 As mshtml.HTMLInputTextElementEvents2_Event
     Private yahooButton_onclick As Object

     Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
      Dim o As Object = GetIEDocument( ターゲットのHWND ) ' No90411 を参照
      doc = DirectCast(o, mshtml.HTMLDocument)
      yahooButton = DirectCast(doc.all.item("yahoo"), mshtml.IHTMLElement)

      yahooButton_onclick = yahooButton.onclick '元の function オブジェクト
      yahooButton.onclick = Nothing '割り当てクリア

      Event1 = DirectCast(yahooButton, mshtml.HTMLInputTextElementEvents2_Event)
      AddHandler Event1.onclick, AddressOf WebDisp_click
     End Sub

     Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
      yahooButton.click()
     End Sub

     Private Function WebDisp_click(ByVal e As mshtml.IHTMLEventObj) As Boolean
      MsgBox("webDisp_onclick", MsgBoxStyle.SystemModal)

      Return CBool(CallByName(yahooButton_onclick, "[DispId=0]", CallType.Method, e)) '元の onclick 処理をここで呼び出す
     End Function
    End Class
記事No.90434 のレス /過去ログ156より / 関連記事表示
削除チェック/

■90456  Re[5]: AddHandler Eventの別スレッドについて
□投稿者/ 魔界の仮面弁士 -(2019/03/12(Tue) 15:03:23)
    2019/03/12(Tue) 15:51:52 編集(投稿者)

    No90455 (魔界の仮面弁士) に追記
    > それともイベントの発生順は JavaScript → VB の順番のままで構わないので、
    > VB 側のイベント処理を「別スレッドで処理させたい」という質問なのでしょうか。

    たとえば『AddHandler Event1.onclick, AddressOf WebDisp_click』の割り当てによって
    WebDisp_click が呼ばれた際に、メッセージボックスを非同期で表示したいのなら、先ほどの

     Private Function WebDisp_click(ByVal e As mshtml.IHTMLEventObj) As Boolean
       'これを閉じるまでフォームを操作できない
       MsgBox("webDisp_onclick", MsgBoxStyle.SystemModal)
       Return True
     End Function

    というコードの代わりに

     Private Function WebDisp_click(ByVal e As mshtml.IHTMLEventObj) As Boolean
       Task.Run(Sub()
              'これを開いたままでもフォームを操作できる
              MsgBox("webDisp_onclick", MsgBoxStyle.SystemModal)
            End Sub)
       Return True
     End Function

    などと書くことができます。
記事No.90434 のレス /過去ログ156より / 関連記事表示
削除チェック/

■90473  Re[10]: AddHandler Eventの別スレッド
□投稿者/ TanuTanu -(2019/03/13(Wed) 14:49:00)
    2019/03/13(Wed) 14:59:10 編集(投稿者)
    2019/03/13(Wed) 14:58:24 編集(投稿者)

    魔界の仮面弁士 様

    大変お世話になっております。
    新プロジェクトにて■No90455 を試す事にしました。

    下記コードにてPWnd1、PWnd2、PWnd3ともに0になってしまいます。
    VB.NETでクラス、タイトル、ハンドル列挙する方法が解らず
    このようなコードになってしまいました。

    初歩的な事で申し訳ありませんがご教授頂きたく存じます。
    宜しくお願いいたします。

    Option Strict On ・・・プロジェクトプロパティでOnするとエラーになる為、ここに直接記載
    Public Class Form1

    Dim PWnd1 As IntPtr
    Dim PWnd2 As IntPtr
    Dim PWnd3 As IntPtr
    Dim aShell As SHDocVw.ShellWindows

    Private doc As mshtml.HTMLDocument

    Private yahooButton As mshtml.IHTMLElement
    Private Event1 As mshtml.HTMLInputTextElementEvents2_Event

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

    PWnd1 = FindWindowExW(IntPtr.Zero, IntPtr.Zero, vbNullString, "JavaScript テスト")・・・FindWindowExWに変更しました。

    Debug.WriteLine(PWnd1)

    PWnd2 = FindWindowExW(IntPtr.Zero, IntPtr.Zero, "IEFrame", "JavaScript テスト")

    Debug.WriteLine(PWnd2)

    PWnd3 = FindWindowExW(IntPtr.Zero, IntPtr.Zero, "Internet Explorer_TridentDlgFrame", "JavaScript テスト")

    Debug.WriteLine(PWnd3)

        ・・・







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

■90543  Re[9]: AddHandler Eventの別スレッドについて
□投稿者/ TanuTanu -(2019/03/19(Tue) 20:43:43)
    魔界の仮面弁士 様

    大変お世話になっております。
    ご教授頂いたお蔭で■90455が当方でもようやく動作致しました。
    ありがとうございます。明日、これを用いてWEBページダイアログのボタンイベントに取り掛かろうと思います。

    ちなみに試行錯誤の結果、下記のようになりましたのでご報告致します。

    'Option Strict On 'これオンすると遅延バインディング使用できませんと出る為、削除しました。

    Public Class Form1

    Dim o As Object
    Dim aShell As SHDocVw.ShellWindows
    Dim doc As mshtml.HTMLDocument
    Dim yahooButton As mshtml.IHTMLElement
    Dim Event1 As mshtml.HTMLInputTextElementEvents2_Event


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


    EnumWindows(New EnumWindowsDelegate(AddressOf EnumWindowCallBack), IntPtr.Zero)

    o = GetIEDocument(hWnd_IES) ' No90411 を参照

    doc = DirectCast(o, mshtml.HTMLDocument)

    Debug.WriteLine(doc.body.document.body.innerHTML)

    yahooButton = DirectCast(doc.all.item("yahoo"), mshtml.IHTMLElement)

    Event1 = DirectCast(DirectCast(doc.all.item("yahoo"), mshtml.IHTMLElement), mshtml.HTMLInputTextElementEvents2_Event)
    AddHandler Event1.onclick, AddressOf WebDisp_click

    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    yahooButton.click()
    End Sub

    Private Function WebDisp_click(ByVal e As mshtml.IHTMLEventObj) As Boolean
    MsgBox("webDisp_onclick", MsgBoxStyle.SystemModal)
    Return True
    End Function


    End Class

    '***************************************************************************************

    Imports System.Runtime.InteropServices
    Imports System.Text

    Module API

    Public hWnd_IEFRAME As IntPtr
    Public hWnd_IES As IntPtr


    <DllImport("user32")>
    Function GetClassName(
    <[In]()> ByVal hWnd As IntPtr,
    <Out()> ByVal lpClassName As StringBuilder,
    <[In]()> ByVal nMaxCount As Integer
    ) As Integer
    End Function

    <DllImport("user32")>
    Function EnumChildWindows(
    <[In]()> ByVal hWndParent As IntPtr,
    <[In]()> ByVal lpEnumFunc As EnumChildProc,
    <[In]()> ByRef lParam As IntPtr
    ) As Boolean
    End Function

    <DllImport("user32")>
    Function RegisterWindowMessage(
    <[In]()> ByVal lpString As String
    ) As Integer
    End Function

    <DllImport("user32")>
    Function SendMessageTimeout(
    <[In]()> ByVal hWnd As IntPtr,
    <[In]()> ByVal msg As Integer,
    <[In]()> ByVal wParam As Integer,
    <[In]()> ByVal lParam As Integer,
    <[In]()> ByVal fuFlags As Integer,
    <[In]()> ByVal uTimeout As Integer,
    <Out()> ByRef lpdwResult As IntPtr
    ) As IntPtr
    End Function

    <DllImport("oleacc")>
    Function ObjectFromLresult(
    <[In]()> ByVal lResult As Int32,
    <[In]()> ByRef riid As System.Guid,
    <[In]()> ByVal wParam As Int32,
    <Out(), MarshalAs(UnmanagedType.Interface)> ByRef ppvObject As Object
    ) As IntPtr
    End Function

    <DllImport("user32.dll", CharSet:=CharSet.Auto, SetLastError:=True)>
    Public Function GetWindowText(hWnd As IntPtr,
    lpString As StringBuilder, nMaxCount As Integer) As Integer
    End Function

    <DllImport("user32.dll", CharSet:=CharSet.Auto, SetLastError:=True)>
    Public Function GetWindowTextLength(hWnd As IntPtr) As Integer
    End Function

    <DllImport("user32.dll")>
    Public Function EnumWindows(lpEnumFunc As EnumWindowsDelegate,
    ByVal lparam As IntPtr) As <MarshalAs(UnmanagedType.Bool)> Boolean
    End Function

    Delegate Function EnumWindowsDelegate(hWnd As IntPtr, ByVal lparam As IntPtr) As Boolean

    Delegate Function EnumChildProc(hWnd As IntPtr, ByVal lParam As IntPtr) As Boolean

    Public Function EnumWindowCallBack(hWnd As IntPtr, ByVal lparam As IntPtr) As Boolean

    Dim textLen As Integer = GetWindowTextLength(hWnd)
    Dim tsb As New StringBuilder(textLen + 1)
    Dim csb As New StringBuilder(256)

    If 0 <textLen Then
    GetWindowText(hWnd, tsb, tsb.Capacity)
    GetClassName(hWnd, csb, csb.Capacity)

    If tsb.ToString() = "JavaScript テスト - Internet Explorer" Then
    If csb.ToString() = "IEFrame" Then

    hWnd_IEFRAME = hWnd

    EnumChildWindows(hWnd_IEFRAME, AddressOf EnumChildWindowsProc, IntPtr.Zero)

    End If
    End If

    End If

    Return True
    End Function

    Public Function EnumChildWindowsProc(hWnd As IntPtr, lparam As IntPtr) As IntPtr

    Dim textLen As Integer = GetWindowTextLength(hWnd)
    Dim tsb As New StringBuilder(textLen + 1)
    Dim csb As New StringBuilder(256)

    GetClassName(hWnd, csb, csb.Capacity)

    If csb.ToString() = "Internet Explorer_Server" Then

    hWnd_IES = hWnd

    End If

    EnumChildWindowsProc = 1
    End Function

    '***********************************************************************

    'IEオブジェクト取得メソッド

    Function GetIEDocument(ByVal hWnd As IntPtr) As Object

    Dim nMsg As Integer
    Dim lRes As IntPtr
    Dim IID_IHTMLDocument As System.Guid = New System.Guid("626FC520-A41E-11CF-A731-00A0C9082637")
    Dim SMTO_ABORTIFHUNG As Integer = &H2
    Dim spDoc As Object = Nothing

    nMsg = RegisterWindowMessage("WM_HTML_GETOBJECT")

    If nMsg <> 0 Then
    SendMessageTimeout(hWnd, nMsg, 0, 0, SMTO_ABORTIFHUNG, 1000, lRes)
    If Not lRes = IntPtr.Zero Then
    ObjectFromLresult(lRes, IID_IHTMLDocument, 0, spDoc)
    End If
    End If

    Return spDoc
    End Function

    End Module


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



<< 0 >>

パスワード/

- Child Tree -