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

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

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

全過去ログを検索

<< 0 >>
■6603  Re[1]: C# から VB6.0のDLLのメッソドを起動
□投稿者/ 魔界の仮面弁士 -(2006/09/19(Tue) 23:59:50)

    分類:[C#] 

    # 「メソッド」表現と
    # 「メッソド」表現が混在しているのが気になりますが、
    # それはとりあえず置いといて……。


    > DLL 側の引数が byref の object型になっていて、
    > 各メソッド内で、object.hoge = "" 等
    > DLL 側で値をセットしています。
    VB6製DLLにオブジェクトを渡す場合、そのデータ型は、COM として
    レジストリに登録されている型である必要があります。指定したクラスが、
    COMとして公開されているかどうかを確認してみてください。


    > object hoge = new clsHoge();
    > vbdll.vbhoge( ref hoge );

    こんな感じでどうでしょう。


    ---------- VB6製DLL (ProgID = "VB6SampleDLL.SampleClass") ----------
    Option Explicit
    Public Sub vbhoge(ByRef object As Object)
    object.hoge = Format(Now, "yyyy-mm-dd hh:nn:ss")
    End Sub

    '以下は、Marshal.ReleaseComObject の解放が行われたかのチェック用
    Private Sub Class_Initialize()
    Debug.Print "-->"; ObjPtr(Me)
    End Sub
    Private Sub Class_Terminate()
    Debug.Print "<--"; ObjPtr(Me)
    End Sub


    ---------- C#2.0製コンソールアプリ ----------
    using System;
    using System.Runtime.InteropServices;

    namespace ConsoleApplication1
    {
    class Program
    {
    static void Main(string[] args)
    {
    VB6SampleDLL.SampleClass vbdll = null;
    try
    {
    object clsHoge = new Hoge();
    vbdll = new VB6SampleDLL.SampleClassClass();
    vbdll.vbhoge(ref clsHoge);
    Console.WriteLine(((Hoge)clsHoge).hoge);
    }
    catch (Exception ex)
    {
    Console.WriteLine(ex.Message);
    }
    finally
    {
    if ((vbdll != null) && Marshal.IsComObject(vbdll))
    {
    Marshal.ReleaseComObject(vbdll);
    }
    }
    Console.ReadLine();
    }
    }

    [ComVisible(true)]
    //[Guid("{1F4F835B-1702-4df9-8AF8-A782713FD1EC}")]
    //[ClassInterfaceAttribute(ClassInterfaceType.AutoDual)]
    public class Hoge
    {
    public string hoge = String.Empty;
    }
    }

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

■25526  Re[1]: TreeViewを簡単にに表示、読み取り
□投稿者/ ネタ好き -(2008/09/21(Sun) 17:51:43)
    No25525 (泥グラマ さん) に返信
    データベースとTreeViewのイベントを賢く使えば効率よく出来ます。
記事No.25525 のレス /過去ログ47より / 関連記事表示
削除チェック/

■44596  Re[5]: カタンという不気味な音
□投稿者/ オショウ -(2009/12/13(Sun) 15:51:43)
    No44595 (北 さん) に返信
    > やはり、終焉に近づいているということなんですね。有り難うございます。
    > 起動は、毎朝、3回は失敗します。前回正常に起動したときの設定にして再起動しますが4〜5回目で
    > ようやく正常に立ち上がります。
    > 今年いっぱいはだましだまし使っていきたいと思っています。

      解決されてますが・・・

      寒くなってからと言うことであれば、結露が心配されます。
      結露でヘッドが、磁性体に貼りついたら一巻の終わり・・・

      ダマシダマシ・・・と言うことですが、それなら部屋を暖めて
      そこそこ温もったかな〜と言うところで電源を投入されること
      を勧めます。

    ※ 私なら電源入れっぱなしにしておきますが・・・
      何が正解と言うことは無いので、必要最低限のものはバックア
      ップされることを勧めます。

    以上。
記事No.44588 のレス / END /過去ログ75より / 関連記事表示
削除チェック/

■54364  ソケット通信の受信間隔時間を一定にしたい
□投稿者/ ホエホエ -(2010/10/15(Fri) 09:51:38)

    分類:[ネットワーク全般] 

    下記にてソケット通信に関して質問させていただいておりました。
    http://bbs.wankuma.com/index.cgi?mode=al2&namber=53983
    http://bbs.wankuma.com/index.cgi?mode=al2&namber=54331

    最初にMFC CSocketクラスを用いてたのをwinsockに変えたり、
    非同期処理だったのをマルチスレッドにして同期処理にしましたが
    解決しなかったので質問させていただきました。

    動作の概要としては送信側は1500バイトのデータを10ミリ秒に
    1度送信し、受信側はデータを受信するごとに動作すると言う
    流れなのですが…

    送信側と受信側でそれぞれ送信・受信間隔時間を計測すると、
    送信側は10ミリ秒に1度1500バイトを送信しているのに対して
    受信側は不定期に受信が発生し約4000バイトぐらいまとめて
    受信してしまいます。

    これをどうにか受信側も10+1〜2ミリ秒程度に確実に受信したいと
    思うのですが良い方法はないでしょうか?

    検索で調べるとMTU/RWINと言う設定が関わってるようなんですが、
    1度の受信バイト数は少なくても良いので受信割込(メッセージ)の
    間隔を狭めれたら良いのですが…

    ご存知の方教えてください。
親記事 /過去ログ91より / 関連記事表示
削除チェック/

■64651  Re[2]: 文字を決まった枠内に収めて描画するには?
□投稿者/ ゆま -(2012/12/13(Thu) 17:25:03)
    ビートさま

    ご返信ありがとうございます。

    試しに中国語1文字かつ中国語フォントで描画してみたところ、
    別の問題が発生してしまいました。

    文字にアンチエイリアスがかかってしまうようになりました。
    下のコードも試してみましたが、アンチエイリアスが消せませんでした。
    pictureBox1.TextRenderingHint = TextRenderingHint.SingleBitPerPixelGridFit;
記事No.64647 のレス /過去ログ109より / 関連記事表示
削除チェック/

■87103  Re[1]: ウインドウを更新する方法
□投稿者/ 魔界の仮面弁士 -(2018/04/11(Wed) 22:12:40)
    No87100 (がむんだ さん) に返信
    > それでVBを使って、ファイルを生成後に自動で
    > ウインドウを更新したいのですが
    > どのようにすれば良いですか?

    これでどうでしょう。

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
     For Each exp In GetObject("new:9BA05972-F6A8-11CF-A442-00A0C90A8F39")
      If CStr(exp.FullName).ToLower() Like "*\explorer.exe" Then
       If MsgBox("更新しますか?" & vbCrLf & exp.LocationName, vbYesNo Or vbQuestion) = vbYes Then
        exp.Refresh2(RefreshConstants.Normal)
       End If
      End If
     Next
    End Sub

    Enum RefreshConstants As Short
     Normal = 0
     IfExpired = 1
     Completely = 3
    End Enum
記事No.87100 のレス /過去ログ149より / 関連記事表示
削除チェック/

■87135  Re[5]: ウインドウを更新する方法
□投稿者/ 魔界の仮面弁士 -(2018/04/14(Sat) 02:35:06)
    No87128 (がむんだ さん) に返信
    > Option Strict On のままにしたいのですが

    その前に、「Option Strict Off にすれば動いたのかどうか」や
    「提示したコードで目的を果たせるのか否か」をフィードバックしてくださいませ。

    提示のコードでは問題が解決できないようであれば、
    そのまま修正しても、あまり意味が無いわけで…。


    > どのように修正すればよろしいでしょうか?
    追加の参照設定を必要とする方法と、参照設定を追加せずに実装する方法とがあります。

    とりあえず後者の場合は、 No35068 のようにすることで、Option Strict On のまま
    9BA05972-F6A8-11CF-A442-00A0C90A8F39 のオブジェクトすなわち ShellWindows を列挙させられます。
    https://msdn.microsoft.com/en-us/library/windows/desktop/bb773974.aspx

    この場合はメソッドの呼び出しも CallByName に置き換えれば OK 。


    参照設定する場合は、[Microsoft Internet Controls] を参照に加えたうえで、ループを
     For Each exp As SHDocVw.InternetExplorer In New SHDocVw.ShellWindows()
    に変更する流れになります。Refresh2 メソッドの引数が ByRef Object の場合は
    列挙型を Object 型変数に入れてから渡すように改修してください。


    ただし、 No87103 にしても今回のコードにしても、
    COM オブジェクトの解放処理を省いたものとなっています。
    解放もきちんと行いたい場合には、ShellWindows を始めとした各種 COM オブジェクトを
    ReleaseComObject するようにしたおいた方が良いでしょう。
    http://bbs.wankuma.com/index.cgi?mode=al2&namber=54129&KLOG=91
記事No.87100 のレス /過去ログ149より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -