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

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

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

全過去ログを検索

<< 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 >>
■56484  Re[5]: pdfをビットマップ出力する方法
□投稿者/ やじゅ -(2011/01/14(Fri) 23:27:51)
>
    No56479 (パタリロ3世 さん) に返信
    > 1.ドライバのSetUp.exeはセットアッププロジェクトのどこに配置すればよいのでしょうか?
    >   (このドライバのSetUp.exeをインストールするわけではないので、アプリケーションフォルダに
    >   置くのも違うような気がしますし、このドライバのSetUp.exeを実行したいので、作成アプリのインストール時に
    >   実行できる場所にないといけない気がしますし...)

    一時フォルダにコピーして実行(下位フォルダを作成した方が名前が重複しない)、インストール後ファイルを消すのはどっちでもよい
    http://www.atmarkit.co.jp/fdotnet/dotnettips/230tempdir/tempdir.html

    > 2.上記1.に配置したドライバのSetUp.exeをどのように実行すればよいのでしょうか?
    >   以下サイトでカスタム動作というものを知ったのですが(バージョンが違うので分かりませんが)、
    >   http://dobon.net/vb/dotnet/deployment/customaction.html
    >   こういうものを使って、Shell(ドライバのSetUp.exeのパス, vbNormalFocus)のような感じで
    >   ドライバのSetUp.exeを実行するのでしょうか?

    下記サイトは、自プログラムを実行となっていますが、それを応用して一時フォルダにコピーしたSetUpファイルを実行する。
    セットアッププロジェクト インストール完了後にプログラムを実行するには
    http://yan-note.blogspot.com/2008/06/blog-post_9942.html
記事No.56417 のレス /過去ログ96より / 関連記事表示
削除チェック/

■57609  XAMPPで構築したPHPをWebで見れるようにするには
□投稿者/ PP -(2011/03/07(Mon) 01:14:38)

    分類:[その他の言語] 

    XAMPPでPHPを作成したものを一時的Webから見れるようにするには
    どうしたらいいのでしょうか?
親記事 /過去ログ96より / 関連記事表示
削除チェック/

■57610  Re[2]: データベースのSeekメソッドで複数の主キーを設定
□投稿者/ 赤いガチャピン -(2011/03/07(Mon) 01:20:27)
    やじゅさん 魔界の仮面弁士さん ご回答ありがとうございます。

    >>データベースのSeekメソッドで
    > 何故 ADO …。(^_^;)
    ADO.netやってみます♪

    >>その中のコードの.Seek Array(10255, 16), adSeekFirstEQ を記入しても
    > それは、VBA / VB6 向けのコードですし。
    そうだったんですね コードも参考にさせていただきます。

    ありがとうございましたm(@_@)m
記事No.57597 のレス / END /過去ログ96より / 関連記事表示
削除チェック/

■58733  C♯ 固定長文字列について
□投稿者/ ポラン -(2011/04/25(Mon) 09:05:42)

    分類:[C#] 


    分類:[C#]

    開発環境:WindowsXP SP3
    言語: VisualStudio2010 C#

    計測器の制御で、DLLの関係でVB6で使用した固定長文字列を
    使用しないとreadコマンドが読めず困っています。

    ///////////
    VB6の場合
    DLLの定義
    Declare Function viRead Lib "VISA32.DLL" Alias "#256" (ByVal vi As Long, ByVal Buffer As String,
    ByVal count As Long, retCount As Long) As Long

    Dim Instring As String * 256
    256の固定長文字列になります。

    viRead(vi, Instring, 256, x)
    viRead関数のInstringが戻り値となって
    文字列が返ってきます。
    ////////////
    VB.netの場合
    Imports Microsoft.VisualBasic.Compatibilityの定義

    DLLの定義
    Declare Function viRead Lib "VISA32.DLL" Alias "#256"(ByVal vi As Integer, ByVal Buffer As String,
    ByVal count As Integer, ByRef retCount As Integer) As Integer

    Dim Instring As New VB6.FixedLengthString(256)
    VB6用の固定長文字列になります。

    viRead(vi, Instring.Value, 256, xx)
    viRead関数のInstringが戻り値となって
    文字列が返ってきます。
    //////////
    C#の場合
    using Microsoft.VisualBasic;の定義

    DLLの定義
    public static extern int viRead(int vi, string Buffer, int count, ref int retCount);
    [DllImport("VISA32.DLL", EntryPoint = "#219", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]

    [VBFixedString(256)]public string Instring;
    sts = class1.viRead(vi, Instring, 256, ref x);
    この定義で動作するかなと思ったのですが、Instringがnull値と
    なって何も文字列が返ってきませんでした。原因を調べた所、VB6は16bitで
    C#は32bitなので、この定義だと32bitの固定長文字列となって動作しないのでは?
    と思っています。元のDLLを直せばそれで直るのかなと思っているのですが、
    メーカー配布のDLLの為、どうやって直したらいいのか素人の為分りません。
    DLLを直さずに、動作する方法があればどなたか教えて頂きたいです。

    以上よろしくお願い致します。
親記事 /過去ログ98より / 関連記事表示
削除チェック/

■59942  Re[1]: SQL実行時エラー
□投稿者/ 風太郎 -(2011/06/13(Mon) 16:27:35)
    No59936 (Haru さん) に返信
    > INSERT文を実行すると、以下のようなエラー文が出ます。
    > 「1 つ以上の必要なパラメーターの値が設定されていません。」
    >
    > いろいろ調べたところ、SQL文がおかしいってあったのですが、私はこの処理を変数などを使い、複数回繰り返すようにプログラムしています。
    > 1回目に追加するときに、このエラーがでると、構文ミスとわかるのですが、
    > 最後のある行でこのエラーが起きます。
    > また、追加先であるMDBファイルを見ると、きちんとその行が追加されています。
    >
    > 構文エラー以外に原因ってあるのでしょうか?
    >

    エラーの起きるSQL文に、ACCESSの予約語が入ってたり・・・?そんなことないですよね。まさか。
記事No.59936 のレス /過去ログ100より / 関連記事表示
削除チェック/

■66153  Re[1]: C# でビット反転の方法を教えて下さい
□投稿者/ shu -(2013/04/03(Wed) 22:03:34)
    No66151 (ビビット さん) に返信

    こんな感じですか。固定文字列を変換してもしょうがないのでTextBoxに入力した
    内容を変換してます。エラーチェックはしてないので想定外の内容が入力されたら例外が発生します。

    UInt32 a = Convert.ToUInt32(textBox1.Text,2);
    UInt32 b = ((a & 0xFFFFFF00) | (~(a & 0xFF) & 0xFF)) + 1;
    textBox2.Text = Convert.ToString(b, 2);
記事No.66151 のレス /過去ログ112より / 関連記事表示
削除チェック/

■69750  Re[4]: VB6とVB.NETのLike演算子の違いについて
□投稿者/ an -(2014/01/27(Mon) 17:05:42)
記事No.69721 のレス / END /過去ログ119より / 関連記事表示
削除チェック/

■69942  CopyFileWでコピー出来ない
□投稿者/ 鯖の味噌 -(2014/02/13(Thu) 10:46:43)

    分類:[VB.NET/VB2005 以降] 

    2014/02/13(Thu) 10:52:44 編集(投稿者)

        Private Declare Function CopyFile Lib "kernel32.dll" Alias "CopyFileW" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Integer) As Integer

    Sub Main()

    Dim Result As Integer = CopyFile("\\?\C:\A.txt", "\\?\C:\B.txt", 0)

    End Sub

    このコードを実行してもResult=0となりコピーできません。
    どこを間違えているのでしょうか?

    Windows7 64bit SP1
    VS Express 2013 for Desktop
    を使用しています。
親記事 /過去ログ119より / 関連記事表示
削除チェック/

■69943  Re[1]: CopyFileWでコピー出来ない
□投稿者/ shu -(2014/02/13(Thu) 10:57:00)
    No69942 (鯖の味噌 さん) に返信
    Cドライブのすぐ下に書こうとしてアクセス制限に引っかかっているのでは?
    C:\の下にフォルダを作成してそこで試してみてはどうでしょう?
記事No.69942 のレス /過去ログ119より / 関連記事表示
削除チェック/

■69945  Re[2]: CopyFileWでコピー出来ない
□投稿者/ 鯖の味噌 -(2014/02/13(Thu) 11:06:38)
    No69943 (shu さん) に返信
    > ■No69942 (鯖の味噌 さん) に返信
    > Cドライブのすぐ下に書こうとしてアクセス制限に引っかかっているのでは?
    > C:\の下にフォルダを作成してそこで試してみてはどうでしょう?

    早速のご返答有難うございます。
    フォルダ「C:\CopyTemp」を作成して下のように試してみました。

    Dim Result As Integer = CopyFile("\\?\C:\CopyTemp\A.txt", "\\?\C:\CopyTemp\B.txt", 0)

    これでもコピーできませんでした。
    「\\?\」を外して

    CopyFile("C:\CopyTemp\A.txt", "C:\CopyTemp\B.txt", 0)

    も試してみましたがコピーできませんでした。
    CopyFileWの定義が間違っているのでしょうか?
記事No.69942 のレス /過去ログ119より / 関連記事表示
削除チェック/

■69946  Re[3]: CopyFileWでコピー出来ない
□投稿者/ shu -(2014/02/13(Thu) 11:13:56)
記事No.69942 のレス /過去ログ119より / 関連記事表示
削除チェック/

■69948  Re[4]: CopyFileWでコピー出来ない
□投稿者/ Hongliang -(2014/02/13(Thu) 11:28:47)
    > <MarshalAs(UnmanagedType.LPStr)> を各ファイル名引数の前に付加してみて下さい。
    CopyFileWなので、LPStrではなくLPWStrですね。

    で思い出した、Unicode版の関数を使用するなら、Declare FunctionではなくDeclare Unicode Functionにする必要があります。
    (そうするとStringは自動的にUnicodeで渡されるようになります)

    あと、
    If Result = 0 Then
    Trace.WriteLine(new Win32Exception(Marshal.GetLastWin32Error()).ToString())
    End If
    などとして、エラーの内容をまず確認すべきです。
記事No.69942 のレス /過去ログ119より / 関連記事表示
削除チェック/

■69951  Re[5]: CopyFileWでコピー出来ない
□投稿者/ 鯖の味噌 -(2014/02/13(Thu) 11:47:58)
    No69948 (Hongliang さん) に返信
    >><MarshalAs(UnmanagedType.LPStr)> を各ファイル名引数の前に付加してみて下さい。
    > CopyFileWなので、LPStrではなくLPWStrですね。
    >
    > で思い出した、Unicode版の関数を使用するなら、Declare FunctionではなくDeclare Unicode Functionにする必要があります。
    > (そうするとStringは自動的にUnicodeで渡されるようになります)
    >
    > あと、
    > If Result = 0 Then
    > Trace.WriteLine(new Win32Exception(Marshal.GetLastWin32Error()).ToString())
    > End If
    > などとして、エラーの内容をまず確認すべきです。

    ありがとうございます。
    ご指摘のとおり、エラーの内容を確認します
記事No.69942 のレス /過去ログ119より / 関連記事表示
削除チェック/

■69947  Re[1]: CopyFileWでコピー出来ない
□投稿者/ 魔界の仮面弁士 -(2014/02/13(Thu) 11:27:23)
    No69942 (鯖の味噌 さん) に返信
    > Private Declare Function CopyFile Lib "kernel32.dll" Alias "CopyFileW"
    Private Declare Unicode Function 〜 と記述しないと、Unicode 版になりません。
    Auto でも良いですが。
記事No.69942 のレス /過去ログ119より / 関連記事表示
削除チェック/

■69949  Re[2]: CopyFileWでコピー出来ない
□投稿者/ shu -(2014/02/13(Thu) 11:43:08)
    No69947 (魔界の仮面弁士 さん) に返信
    > ■No69942 (鯖の味噌 さん) に返信
    >>Private Declare Function CopyFile Lib "kernel32.dll" Alias "CopyFileW"
    > Private Declare Unicode Function 〜 と記述しないと、Unicode 版になりません。
    > Auto でも良いですが。
    そこでしたかmm


    No69945 (鯖の味噌 さん) に返信
    ところでAPIで記述されていますがSystem.IO.File.Copy等でファイルコピーするのでは
    用が足りないのでしょうか?長すぎるファイル名を対象としているということなのでしょうか?
記事No.69942 のレス /過去ログ119より / 関連記事表示
削除チェック/

■69950  Re[3]: CopyFileWでコピー出来ない
□投稿者/ 鯖の味噌 -(2014/02/13(Thu) 11:46:59)
    No69949 (shu さん) に返信
    > ■No69947 (魔界の仮面弁士 さん) に返信
    >>■No69942 (鯖の味噌 さん) に返信
    > >>Private Declare Function CopyFile Lib "kernel32.dll" Alias "CopyFileW"
    >>Private Declare Unicode Function 〜 と記述しないと、Unicode 版になりません。
    >>Auto でも良いですが。
    > そこでしたかmm
    >
    >
    > ■No69945 (鯖の味噌 さん) に返信
    > ところでAPIで記述されていますがSystem.IO.File.Copy等でファイルコピーするのでは
    > 用が足りないのでしょうか?長すぎるファイル名を対象としているということなのでしょうか?


    はい。長すぎるファイル名を対象にしています。
記事No.69942 のレス /過去ログ119より / 関連記事表示
削除チェック/

■69952  Re[1]: CopyFileWでコピー出来ない
□投稿者/ 鯖の味噌 -(2014/02/13(Thu) 11:51:04)
    No69942 (鯖の味噌 さん) に返信
    > 2014/02/13(Thu) 10:52:44 編集(投稿者)
    >
    > Private Declare Function CopyFile Lib "kernel32.dll" Alias "CopyFileW" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Integer) As Integer
    >
    > Sub Main()
    >
    > Dim Result As Integer = CopyFile("\\?\C:\A.txt", "\\?\C:\B.txt", 0)
    >
    > End Sub
    >
    > このコードを実行してもResult=0となりコピーできません。
    > どこを間違えているのでしょうか?
    >
    > Windows7 64bit SP1
    > VS Express 2013 for Desktop
    > を使用しています。

    返答をくださいました皆様ありがとうございました。
    以下のように記述し、コピー出来ました。

    Private Declare Unicode Function CopyFile Lib "kernel32.dll" Alias "CopyFileW" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Integer) As Integer
    Sub Main()
    Dim Result As Integer = CopyFile("\\?\C:\CopyTemp\A.txt", "\\?\C:\CopyTemp\B.txt", 1)
    If Result = 0 Then
    Trace.WriteLine(New ComponentModel.Win32Exception(Marshal.GetLastWin32Error()).ToString())
    End If
    End Sub


    MarshalAsは付けていませんが問題ないでしょうか?
記事No.69942 のレス /過去ログ119より / 関連記事表示
削除チェック/

■69956  Re[2]: CopyFileWでコピー出来ない
□投稿者/ 魔界の仮面弁士 -(2014/02/13(Thu) 12:07:24)
    No69952 (鯖の味噌 さん) に返信
    > MarshalAsは付けていませんが問題ないでしょうか?

    あった方が良いですが、無くても大抵は大丈夫です。

    現状のコードだと、たとえば
     Dim s1 As String = "\\?\C:\A.xls"
     Dim s2 As String = "\\?\C:\B.xls"
     Dim a As String = s1
     Dim b As String = s2
     Dim Result As Integer = CopyFile(s1, s2, 1)
    を実行した後、「If s1 Is a Then」や「If s2 Is b Then」が False になってしまいます。
    本来の型は LPTSTR ではなく LPCTSTR のはずなのですけれどね。


    なので、厳密には
     ( _
      <MarshalAs(UnmanagedType.LPStr)> ByVal lpExistingFileName As String, _
      <MarshalAs(UnmanagedType.LPStr)> ByVal lpNewFileName As String, _
      <MarshalAs(UnmanagedType.Bool)> ByVal bFailIfExists As Boolean) _
     As <MarshalAs(UnmanagedType.Bool)> Boolean
    と定義するのが正しいことになります。
    これならば、「If s1 Is a Then」は True のままとなります。


    あるいは、Declare ではなく <DllImport> を使うこともできます。
    DllImportAttribute であれば、MarshalAsAttribute を指定せずとも
    「If s1 Is a Then」が True のままとなります。
記事No.69942 のレス /過去ログ119より / 関連記事表示
削除チェック/

■69954  Re[2]: CopyFileWでコピー出来ない
□投稿者/ shu -(2014/02/13(Thu) 12:00:53)
    No69952 (鯖の味噌 さん) に返信
    >
    > MarshalAsは付けていませんが問題ないでしょうか?
    No69948 Hongliangさんが回答されているように
    Unicodeで渡されるということなので問題ないと思います。

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

■69955  Re[3]: CopyFileWでコピー出来ない
□投稿者/ 鯖の味噌 -(2014/02/13(Thu) 12:06:31)
    No69954 (shu さん) に返信
    > ■No69952 (鯖の味噌 さん) に返信
    >>
    >>MarshalAsは付けていませんが問題ないでしょうか?
    > No69948 Hongliangさんが回答されているように
    > Unicodeで渡されるということなので問題ないと思います。
    >
    >

    ご返答有難うございます!
記事No.69942 のレス / END /過去ログ119より / 関連記事表示
削除チェック/

<前の20件 | 次の20件>

<< 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 >>

パスワード/

- Child Tree -