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 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 >>
■69710  Re[4]: 別プログラムへドラッグ&ドロップ経由でのファイル送信方法
□投稿者/ kumatti -(2014/01/22(Wed) 19:54:49)
記事No.69699 のレス /過去ログ119より / 関連記事表示
削除チェック/

■69718  Re[4]: 別プログラムへドラッグ&ドロップ経由でのファイル送信方法
□投稿者/ azutake -(2014/01/24(Fri) 01:37:12)
    No69705 (魔界の仮面弁士 さん) に返信
    > 2014/01/22(Wed) 14:00:39 編集(投稿者)
    >
    > ■No69704 (azutake さん) に返信
    >>また,Clipboardの使用は必須となりますでしょうか.
    >
    > OLEドラッグ&ドロップ、クリップボード、OLE埋め込みなどにおいては、
    > プロセス間のデータ交換に、いずれも IDataObject が用いられています。
    > そのため実験時には、てっとり早く Clipboard を流用しています。
    >
    > Clipboard を使わずとも、IDataObject の実装さえ用意できれば OK かと思います。
    >
    > たとえば、先に紹介した過去ログにもある IShellFolder.GetUIObjectOf を使う方法があります。
    > これなら、物理パスを持たないアイテム(コントロールパネル内のアイコンとか)さえも処理できます。
    > ドロップ先のアプリがそれを受け取るかどうかは別として。
    >
    >  Windows SDK - IShellFolder::GetUIObjectOf method
    >  http://msdn.microsoft.com/en-us/library/windows/desktop/bb775073.aspx
    >
    > 関連情報として:
    >  Knowledge Base 183860 (Q183860) - How To Support Dropping of Items on Your Namespace Root
    >  http://support.microsoft.com/kb/183860/en-us
    >
    >
    > あるいは、System.Runtime.InteropServices.ComTypes.IDataObject インターフェースを
    > 実装するクラスを作成し、ドラッグ&ドロップの機能を実装することもできます。
    > 出来合いの実装を利用する方法に比べると、手間はかかりますが、
    > 下記にサンプルがあるので参考までに。
    >
    >  MSDN Blogs - Creating something from nothing [Developer-friendly virtual file implementation for .NET!]
    >  http://blogs.msdn.com/b/delay/archive/2009/10/26/creating-something-from-nothing-developer-friendly-virtual-file-implementation-for-net.aspx
    >
    >
    >
    > いくつかの COM 型は、System.Runtime.InteropServices あるいはその配下の名前空間に
    > まとめられていますが、今回の場合はそれだけでは足りないかも知れません。その場合は
    > 定数値やCOMインターフェイスの定義を調べて、自前で宣言しておいてください。
    >
    >
    > なお、OLEドラッグ&ドロップの仕組みについては、下記が参考になるかと思います。
    > 後者については、IShellFolder.GetUIObjectOf にて
    > IDataObject を取得する手法も紹介されていますよ。
    >
    >  窓プログラミング - 窓プログラミング2
    >  http://hp.vector.co.jp/authors/VA016117/winsdk2.html
    >
    >
    >  EternalWindows - OLE - OLE D&D
    >  http://eternalwindows.jp/ole/oledrag/oledrag00.html
    >
    >
    > 本来であれば、ドロップ先アプリで実装された Drop メソッドが、OS によって
    > 呼び出されることでドロップ処理が行われるわけですが、今回はそれを
    > 自作アプリから呼び出すことになるかと思います。
    >
    >
    > # あくまでも可能性を提示しているのみです。実装可能かどうかは分かりません。

    結局ご回答していただいた資料等を参照にしたりWM_DROPFILESを使用したりし,作成しました.
    ご回答した皆様,お騒がせし申し訳ありません.
    また、沢山のご回答ありがとうございました.
記事No.69699 のレス / END /過去ログ119より / 関連記事表示
削除チェック/

■69646  クラステンプレートのメンバー関数ポインタ用部分特殊化
□投稿者/ キム -(2014/01/16(Thu) 22:39:19)

    分類:[C/C++] 

    2014/01/17(Fri) 00:22:05 編集(投稿者)

    クラステンプレートを部分特殊化して関数ポインタ用の特別バージョンを作成しています。
    そして、メンバー関数(インスタンス関数)ポインタ用の特別バージョン記述方法について質問があります。

    // 標準バージョン(実装はしない)
    template <typename>
    class Test;

    // 普通の関数ポインタ用特別バージョン
    template <typename R, typename T1>
    class Test<R (*)(T1)>
    {
    ...
    }

    これを使うには、

    Test<void (*)(int)> a;

    のようにします。
    で、普通の関数はアドレスなので、部分特殊化を

    template <typename R, typename T1>
    class Test<R (T1)>
    {
    ...
    }

    のように書けば、

    Test<void (int)> b;

    のように使うことも出来ます。
    次に、メンバー関数ポインタ用特別バージョンですが、以下のように書きました。

    // メンバー関数ポインタ用特別バージョン
    template <typename R, typename C, typename T1>
    class Test<R C::(*)(T1)>
    {
    ...
    }

    これを使うには、

    Test<void (MyClass::*)(int)> c;

    のようにします。
    ところが、使う側から『普通の関数版と同じように書きたい(*を省略したい)』との要望があり、困っています。
    普通の関数ポインタとは違うから出来ないと説明しましたが、知識不足で根拠を明確に出来ませんでした。
    出来ない明確な根拠をご教示いただけると助かります。
    または、もっと良い記述方法があればご教示いただけると助かります。

    コンパイラはVC++2008です。
    スマートデバイス用のビルドをするので2008より新しいバージョンは使えません。
    boost等のライブラリは使用禁止、std::tr1名前空間も使用禁止という状況です。
    (Visual C++ 2008 Feature Pack も未インストールです)

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

■69660  Re[1]: クラステンプレートのメンバー関数ポインタ用部分特殊化
□投稿者/ επιστημη -(2014/01/17(Fri) 21:43:30)
    > または、もっと良い記述方法があればご教示いただけると助かります。
    >
    > コンパイラはVC++2008です。
    > スマートデバイス用のビルドをするので2008より新しいバージョンは使えません。
    > boost等のライブラリは使用禁止、std::tr1名前空間も使用禁止という状況です。

    うーん... 縛りがキツすぎるかな。
    function<R(T)> と lambda 使えばあっさりできちゃうんですけどねー
記事No.69646 のレス /過去ログ119より / 関連記事表示
削除チェック/

■69661  Re[2]: クラステンプレートのメンバー関数ポインタ用部分特殊化
□投稿者/ 774RR -(2014/01/17(Fri) 23:18:23)
    結局のところ [普通の関数へのポインタ] と [メンバ関数へのポインタ] の違いを、
    うるさがた同僚に納得できていただければそれでよい・・・ということならば。

    普通の関数へのポインタと、メンバ関数へのポインタではサイズが違う
    http://www7b.biglobe.ne.jp/~robe/cpphtml/html03/cpp03058.html

    メンバ関数へのポインタを整数値から得ることはできない
    http://rarara.cafe.coocan.jp/cgi-bin/lng/vc/vclng.cgi?print+201302/13020010.txt

    使うときにも (使う先で必要となる) this が必要とか、で納得してもらえないかなー。

    単に記法が納得できない、という1だけの問題であるなら
    ※マークのない myclass:: だけではポインタであるとコンパイラが判別できないわけで、
    その辺はプログラマのほうがコンパイラに譲歩してやる必要があるとでも言っておけばよいかも。

    メンバ関数へのポインタって多用する?
    俺なら virtual にして暗黙に vtbl/vptr 経由で使えばそれでいいと思う。
記事No.69646 のレス /過去ログ119より / 関連記事表示
削除チェック/

■69689  Re[3]: クラステンプレートのメンバー関数ポインタ用部分特殊化
□投稿者/ キム -(2014/01/21(Tue) 09:41:36)
    No69661 (774RR さん) に返信
    お返事ありがとうございます。
    URLまでご提示いただきありがとうございます。
    おかげさまで理解はしてもらえましたが、テンプレートが嫌いなようで、理解はしたが納得はできないの一点張りでした。
    上に書いたように関数テンプレートを使うことで何とか許してもらえました。

    関数の引数が型推定できるパターンだと以下のように完全に省略して書けるようになりました。
    Function<void> f;
    f.Set(this, &MyClass::MyFunc1, 10, 1.234, _T("ABC"));
    f(); // this->MyFunc1(10, 1.234, _T("ABC"));

    関数の引数が型推定出来ないパターンでも関数ポインタ型は判るので問題なくなりました。
    Function<int> f;
    f.Set<MyClass, int&, int&>(this, &MyClass::MyFunc2, 10, 20);
    int r = f(); // this->MyFunc2(10, 20);
記事No.69646 のレス /過去ログ119より / 関連記事表示
削除チェック/

■69688  Re[2]: クラステンプレートのメンバー関数ポインタ用部分特殊化
□投稿者/ キム -(2014/01/21(Tue) 09:36:10)
    No69660 (επιστημη さん) に返信
    お返事ありがとうございます。
    ご推察の通り、やりたいことは関数ポインタと任意の型/個数の引数をすべて保持して、後でoperator()により呼び出すことなのです。
    スレッドに関数に渡したり、コンテナに入れて別スレッドで逐次実行したりします。
    function関連を使えば簡単に実現できそうですね。

    残念ながら今回は縛りが厳しいので、すべて自作で結局スマートポインタまで実装してしまいました。
    一応の解決を見たので、簡単に構造を書きます。おかしな点があればご指摘ください。

    まず、一番の下っ端にFuncHolderクラステンプレートがあります。
    class FuncHolder<typename>;
    引数の型/数(最大6)/メンバー関数かどうかによって部分特殊化していて、このクラスが関数ポインタと任意の型/個数の引数をすべて保持します。
    class FuncHolder<R (C::*)(T1, T2, T3)> : public FuncHolderBase<R> {...};
    そして、関数を呼び出せるように、operator()をオーバーロードしています。
    今回の質問は、これのテンプレート引数の記述方法でした。

    その上にいるのがFuncHolderBase<typename R>クラステンプレートで、FuncHolderはこれを継承しています。
    このクラスは抽象クラスで、コンテナに入れるためだけに用意しました。
    内容は virtual R operator()() const = 0;だけです。

    そして、一番外側にいるのがFunction<typename R>クラスです。(今回の質問の後で追加しました)
    FuncHolderBase及びFuncHolderは外から見えないようにこのクラスのprivateなインナークラスとして記述しました。
    このクラスのSetメソッドは関数テンプレートになっており、FuncHolderの特別バージョンを生成します。
    そして、生成したFuncHolderの特別バージョンは、FuncHolderBase<R>型のスマートポインタに保持されます。
    このSetメソッドを関数テンプレートとすることで、質問内容である記述方法の簡略化を実現しました。
    (コンパイラが型推定してくれるので、関数の引数に参照がなければ何も書かなくて済むようになりました)
記事No.69646 のレス /過去ログ119より / 関連記事表示
削除チェック/

■69725  Re[3]: クラステンプレートのメンバー関数ポインタ用部分特殊化
□投稿者/ キム -(2014/01/24(Fri) 17:06:12)
    数日間実際に使用してもらいましたが、問題なく使えているので解決とします。
    ありがとうございます。

    まとめ
    - クラスのインスタンスメンバー関数ポインタは通常の関数ポインタとはまったく異なり、宣言も面倒。
    - クラステンプレートだとコンパイラがテンプレートパラメーターの型を自動推定できないので自分で書かなければならない。
    - ヘルパー関数的な関数テンプレートを記述すれば自動推定してくれるので楽になる。
記事No.69646 のレス / END /過去ログ119より / 関連記事表示
削除チェック/

■69707  コンソールアプリケーションでのフォルダ作成
□投稿者/ あいうー -(2014/01/22(Wed) 18:16:52)

    分類:[C#] 

    vs2013 C#でプログラムが存在するパスに、自分で名前を入力し、数も指定できる
    プログラムを組みたいのですが、どうしたら良いでしょうか、調べてはみたものの、
    あまり役には立ちませんでした。(失礼ですが)

    厚かましいお願いですが、サンプルコードなどがあれば
    よろしくお願いします。
親記事 /過去ログ119より / 関連記事表示
削除チェック/

■69708  Re[1]: コンソールアプリケーションでのフォルダ作成
□投稿者/ 魔界の仮面弁士 -(2014/01/22(Wed) 19:00:51)
    No69707 (あいうー さん) に返信
    > vs2013 C#でプログラムが存在するパスに、
    これは、そのプログラム(EXE)自身のパス、ということでしょうか。


    > 自分で名前を入力し、数も指定できる
    名前とは、フォルダー名のことでしょうか? また、数というのは何の数でしょうか。

    階層数のことなのか… "NewFolder" ×3 なら C:\target\NewFolder\NewFolder\NewFolder\
    連番を振りたいのか… "NewFolder" ×3 なら C:\target\NewFolder1\、C:\target\NewFolder2\、C:\target\NewFolder3\


    > プログラムを組みたいのですが、どうしたら良いでしょうか
    何について知りたいですか?
    「やりたいこと」は分かりましたが、
    「何を知りたいのか」「何が分からないのか」が書かれていないようです。


    とりあえず、フォルダーを作成するには、System.IO.Directory.Create メソッドを使えば OK です。
    また、深い階層のフォルダーを作成したい場合は、上の階層からひとつずつ作成する必要があります。


    それとも、「名前を入力する」方法を探しているのでしょうか。
    だとしたら、まずは Console.ReadLine メソッドを試してみてください。
    http://ufcpp.net/study/csharp/st_consoleio.html


    あるいは、コマンドライン引数で名前を渡したいということなのであれば、
    下記のサンプルが参考になるかと思います。
    http://dobon.net/vb/dotnet/programing/commandline.html



    > 調べてはみたものの、
    > あまり役には立ちませんでした。(失礼ですが)
    どういう情報を求めているのかが質問文からは読み取りにくかったので、
    もう少し具体的に書いて頂けると助かります。

    具体的には何を調べてみたのか、Webページ名や書籍名などを覚えていれば教えてください。
    また、役に立たなかったとのことですが、その理由が
    「まったく関係ない情報だった」のか、「関係しているように思えるが理解できなかった」のか、
    「やりたいことに似ているけれど、自分の思っているものとは微妙に異なる」のか、
    「○○というキーワードで探したけれど、情報そのものが何も見つからなかった」とか。


    具体的な情報が無いと、具体的なサンプルあるいは考え方のヒントを出したとしても、
    これも役に立たない!と切り捨てられてしまいそうで…。
記事No.69707 のレス /過去ログ119より / 関連記事表示
削除チェック/

■69709  Re[1]: コンソールアプリケーションでのフォルダ作成
□投稿者/ WebSurfer -(2014/01/22(Wed) 19:11:45)
    No69707 (あいうー さん) に返信
    > vs2013 C#でプログラムが存在するパスに、自分で名前を入力し、数も指定できる
    > プログラムを組みたいのですが、どうしたら良いでしょうか、調べてはみたものの、
    > あまり役には立ちませんでした。(失礼ですが)
    >
    > 厚かましいお願いですが、サンプルコードなどがあれば
    > よろしくお願いします。

    「c# ディレクトリ作成」などをキーワードにググれば、サンプルコードがあるサイト
    がいくらでも見つかるはずです。基本的な知識があれば十分役に立つはずです。

    「役には立ちません」とはどういう意味ですか? あなたの知識では理解できないと
    いうことですか?
記事No.69707 のレス /過去ログ119より / 関連記事表示
削除チェック/

■69713  Re[2]: コンソールアプリケーションでのフォルダ作成
□投稿者/ あいうー -(2014/01/22(Wed) 23:16:26)
    No69709 (WebSurfer さん) に返信

    なにぶん当方は初心者なもので、
    様々なサイトを漁りましたが、理解しがたいものばかりです

    初心者向けのサイトも巡りましたが、あまり理解できずに
    何かプログラムでも作れば少しは理解できるだろう、
    と甘い気持ちでやったのが悪いですね

    わからない点は、ファイル名自分で入力可能にする点
    var name = Console .ReadLine();

    これをどうやったらファイル名にすることができるのか、

    そして、ファイルを連番のように連番数を入力指定するには
    どうしたらよいのか、ということが知りたいです
記事No.69707 のレス /過去ログ119より / 関連記事表示
削除チェック/

■69715  Re[3]: コンソールアプリケーションでのフォルダ作成
□投稿者/ 魔界の仮面弁士 -(2014/01/23(Thu) 01:58:27)
    No69713 (あいうー さん) に返信
    > わからない点は、ファイル名自分で入力可能にする点

    ファイル名……ですか?

    最初の質問に、「フォルダ作成」の話はありましたが、
    「ファイル」の話は無かったと思います。

    一つのフォルダーの中に、複数の連番ファイルを配置したいということでしょうか?
    それとも、(ファイル名ではなく)フォルダー名のことでしょうか?


    > var name = Console .ReadLine();
    入力はそれで良いと思いますよ。
    実行したら、画面に適当な名前を入れて Enter キーを押せば、
    変数 name に、その文字列がセットされます。

    あとはそれを、フォルダーの名前なり、ファイルの名前なりとして
    利用すれば良いことになります。

    たとえば、現在の場所にフォルダーを一つ作るならこんな感じです。

    class Program
    {
      static void Main()
      {
        var name = Console.ReadLine();
        System.IO.Directory.CreateDirectory(name);
      }
    }

    ※先ほどの回答では、 Directory.Create と回答してしまいましたが、
     正しくは上記のとおり、Directory.CreateDirectory です。失礼しました。


    上記を実行して、たとえば「TEST」と入力して Enter キーを押すと、
    現在の場所(特に指定しなければ EXE のある位置)に、TEST フォルダーが生成されます。

    もし、TEST1、TEST2、TEST3 と続けて作成したいのであれば、
     System.IO.Directory.CreateDirectory(name + "1");
     System.IO.Directory.CreateDirectory(name + "2");
     System.IO.Directory.CreateDirectory(name + "3");
    のように、「+ 演算子」で文字列連結すれば OK です。


    上記では 3 個固定のコードで書いていますが、作成される数を
    変更できるようにしたいのであれば、ループ処理を用いましょう。

     var name = Console.ReadLine();
     for (int i = 1; i <= 9; i++)
     {
      System.IO.Directory.CreateDirectory(name + i);
     }

    たとえば上記では、1〜9 まで 9 個のファイルが作成されます。
    「1」や「9」と書かれている部分を別の値にして、動作を確認してみてください。
    最終的には、その個数もユーザーに入力させるようにすると良いでしょう。



    > これをどうやったらファイル名にすることができるのか、
    上記のように、+ 演算子で文字列連結することができます。

    別のディレクトリーに配置したいような場合には、
    System.IO.Path.Combine メソッドで、パスを連結しても良いでしょう。

     // 既に存在しているフォルダー名を用意
     var baseFolder = @"C:\あいう";

     // その下に、変数nameで指定された名前を連結
     var newPath = System.IO.Path.Combine(baseFolder, name);

     // フォルダーを作成
     System.IO.Directory.CreateDirectory(name);


    たとえば上記の場合、name に「SAMPLE」という文字列が渡されていれば、
    newPath には「C:\あいう\SAMPLE」という文字列がセットされ、
    その結果、「C:\あいう」の下に「SAMPLE」フォルダーが作成されることになります。


    > そして、ファイルを連番のように
    フォルダーではなく、あくまでもファイルということであれば、
    とりあえず 0 バイトのファイルを作成するために、
      System.IO.File.WriteAllText(fileName, null);
    のようなコードを利用できます。
    変数fileNameにはファイルの名前またはフルパスを指定してください。


    > 連番数を入力指定するには
    今回紹介した「for (int i = 1; i <= 9; i++)」という構文の
    「9」の数字を指定させるのであれば、たとえば

     var count = Convert.ToInt32(Console.ReadLine());
     for (int i = 1; i <= count; i++)
     {

    などのように書けます。
    (実行する時には、数値以外を入力してしまわないように注意してくださいね)
記事No.69707 のレス /過去ログ119より / 関連記事表示
削除チェック/

■69714  Re[3]: コンソールアプリケーションでのフォルダ作成
□投稿者/ WebSurfer -(2014/01/23(Thu) 01:42:40)
    No69713 (あいうー さん) に返信
    > ■No69709 (WebSurfer さん) に返信
    >
    > なにぶん当方は初心者なもので、
    > 様々なサイトを漁りましたが、理解しがたいものばかりです
    >
    > 初心者向けのサイトも巡りましたが、あまり理解できずに
    > 、
    > と甘い気持ちでやったのが悪いですね
    >
    > わからない点は、ファイル名自分で入力可能にする点
    > var name = Console .ReadLine();
    >
    > これをどうやったらファイル名にすることができるのか、
    >
    > そして、ファイルを連番のように連番数を入力指定するには
    > どうしたらよいのか、ということが知りたいです

    その知識レベルですと、回答者に全部コードを書いてもらわないとダメそうですが、それを
    掲示板で赤の他人に期待するのはどうかと思います。少なくとも自分はお役に立てません。

    ただ「何かプログラムでも作れば少しは理解できるだろう」というのはその通りですので、
    まずは自分で調べて、自分でできるところまで作ってみてください。その上でどうしても分
    からないところを質問すれば、回答が得やすいと思います。

    それから、初心者の方が勉強するなら、初心者向けの本などを買って体系的に行うことをお
    勧めします。ネットの情報は初心者向けでないことが多いですから。
記事No.69707 のレス /過去ログ119より / 関連記事表示
削除チェック/

■69726  Re[4]: コンソールアプリケーションでのフォルダ作成
□投稿者/ あいうー -(2014/01/24(Fri) 17:21:45)
    何から何まで申し訳ない・・・
    今度からはなるべく勉強します。

    そして、自立できるよう頑張ります
記事No.69707 のレス /過去ログ119より / 関連記事表示
削除チェック/

■69716  WebBrowserが起動してこないです
□投稿者/ けんじ -(2014/01/24(Fri) 00:21:00)

    分類:[.NET 全般] 

    C#でプログラムを書いています。環境はWin7です。
    Formにボタンを配置し、ボタンが押されるとIEが起動するというプログラムを作ろうとしています。
    下記のコードを書いて実行したところ、IEが起動してきませんでした。

    いったいどこが悪いのでしょうか?よろしくお願いします。

    private void button2_Click(object sender, EventArgs e)
    {
    string website = "http://www.yahoo.co.jp/";
    System.Windows.Forms.WebBrowser web = new WebBrowser();
    web.visible = true;
    web.Navigate(website);
    }
親記事 /過去ログ119より / 関連記事表示
削除チェック/

■69717  Re[1]: WebBrowserが起動してこないです
□投稿者/ 魔界の仮面弁士 -(2014/01/24(Fri) 00:56:40)
    2014/01/24(Fri) 01:20:02 編集(投稿者)

    No69716 (けんじ さん) に返信
    > Formにボタンを配置し、ボタンが押されるとIEが起動するというプログラムを作ろうとしています。

    であれば、一番簡単なのは
     System.Diagnostics.Process.Start("http://www.yahoo.co.jp/");
    ですね。起動した後にそれを制御したいのであれば、別の方法もありますが。


    > いったいどこが悪いのでしょうか?
    web.visible = true; を
    web.Visible = true; に変更しないと
    そもそも実行することすらできませんよ。

    それはさておき:

    「WebBrowser」は TextBox や Label と同様、Form 上に置いて使う部品です。
    (ツールボックス上に、WebBrowser コントロールがあるかと思います)

    これは別途 IE を起動するというものではなく、フォーム上に
    HTML ページを表示するために使われるコントロールです。

    今回の場合、web = new WebBrowser(); で生成した後、
    それをフォーム上に Controls.Add(web); していなかったため、
    yahoo のサイトが表示されることも無かったわけです。
記事No.69716 のレス /過去ログ119より / 関連記事表示
削除チェック/

■69732  Re[2]: WebBrowserが起動してこないです
□投稿者/ けんじ -(2014/01/25(Sat) 10:19:27)
    魔界の仮面弁士さん

    > であれば、一番簡単なのは
    >  System.Diagnostics.Process.Start("http://www.yahoo.co.jp/");

    ⇒この方法でIEを起動しました。

    > 「WebBrowser」は TextBox や Label と同様、Form 上に置いて使う部品です。
    > (ツールボックス上に、WebBrowser コントロールがあるかと思います)

    ⇒勘違いしていました。WebBrowserのオブジェクトを作って、これを操作できると思っていました。
    別の方法が一度ないか調べてみて、無理なようであればまた質問させて頂けませんでしょうか。

    ありがとうございました。

    No69717 (魔界の仮面弁士 さん) に返信
    > 2014/01/24(Fri) 01:20:02 編集(投稿者)
    >
    > ■No69716 (けんじ さん) に返信
    >>Formにボタンを配置し、ボタンが押されるとIEが起動するというプログラムを作ろうとしています。
    >
    > であれば、一番簡単なのは
    >  System.Diagnostics.Process.Start("http://www.yahoo.co.jp/");
    > ですね。起動した後にそれを制御したいのであれば、別の方法もありますが。
    >
    >
    >>いったいどこが悪いのでしょうか?
    > web.visible = true; を
    > web.Visible = true; に変更しないと
    > そもそも実行することすらできませんよ。
    >
    > それはさておき:
    >
    > 「WebBrowser」は TextBox や Label と同様、Form 上に置いて使う部品です。
    > (ツールボックス上に、WebBrowser コントロールがあるかと思います)
    >
    > これは別途 IE を起動するというものではなく、フォーム上に
    > HTML ページを表示するために使われるコントロールです。
    >
    > 今回の場合、web = new WebBrowser(); で生成した後、
    > それをフォーム上に Controls.Add(web); していなかったため、
    > yahoo のサイトが表示されることも無かったわけです。
記事No.69716 のレス / END /過去ログ119より / 関連記事表示
削除チェック/

■69734  IntelのグラフィックドライバのCOM
□投稿者/ kumatti -(2014/01/25(Sat) 11:08:14)

    分類:[C/C++] 

    こんにちは。

    IntelのグラフィックドライバのCOMを利用してるのですが、設定と対になってる取得のプロパティ呼び出しでどうしても規定値しか取れません。
    どなたかお分かりになる方、ご教示ください。

    Device IDは、デバイスマネージャで調べました。
    http://www.pc-master.jp/blog/internet/2398.html

    環境 Windows8.1 Pro x64/VC++2013

    #import "igfxsrvc.exe"
    #include <windows.h>
    #include <stdio.h>

    using namespace IGFXSRVCLib;

    void _GetBrightness()
    {

    try {
    DWORD dwDevice = 102;

    IColorPtr pUnk;
    HRESULT hr = pUnk.CreateInstance(__uuidof(Color));
    if (FAILED(hr)) _com_issue_error(hr);

    //明度取得
    //0は全色と思われる
    long pVal = pUnk->GetMainScreenBrightness(dwDevice, 0);
    char tmp[50];
    sprintf(tmp, "%d", pVal);
    MessageBoxA(nullptr, tmp, "test", MB_OK);

    }
    catch (_com_error& e) {
    MessageBoxA(nullptr, e.ErrorMessage(), "err", MB_OK);
    }
    }


    int CALLBACK WinMain(
    _In_ HINSTANCE hInstance,
    _In_ HINSTANCE hPrevInstance,
    _In_ LPSTR lpCmdLine,
    _In_ int nCmdShow
    )
    {
    ::CoInitialize(NULL);
    _GetBrightness();
    ::CoUninitialize();
    return 0;
    }
親記事 /過去ログ119より / 関連記事表示
削除チェック/

■69711  VB.Net(VS2010) メモリ ヒープサイズ指定方法に
□投稿者/ ふるーてぃお -(2014/01/22(Wed) 22:16:26)

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

    環境
    VS2010 VB.NET3.5 WindowsServer2008 64bit

     現在VB.Netコンソールアプリケーションを開発しています
     処理内容はファイルを読み込み、1文字ずつ特定の文字コードが
     ないかチェックし、特定の文字がある場合は前後に
     0e 0fの文字コードを挿入しています。
     (EBCDIC、2バイト文字のシフトイン シフトアウト処理)
     
     サーバー上で実行していますが、
     問題は1GBを超えるファイルを読み込むと、OutOfMemoryが出てしまいます。
     サーバー上のメモリ自体はまだまだ空きがありますので
     アプリケーション上で使えるメモリのサイズを上げたいのですが、
     VB.Netでメモリサイズを指定することはできますか。

     Javaでいう所の以下のようなイメージです。
     java -Xmx:64m -Xms:64m myApp


     調査に当たり、以下のサイトを見ましたが、
     解決に至っていません。
     http://social.msdn.microsoft.com/Forums/vstudio/ja-JP/7f4e9ebc-bfc5-4d3c-a2d2-5e17c390ae00/c?forum=csharpgeneralja
     http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10100591780
     http://i.loveruby.net/ja/rhg/book/gc.html
     
     ご教授願いたく。
親記事 /過去ログ119より / 関連記事表示
削除チェック/

<前の20件 | 次の20件>

<< 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 >>

ヒット件数が多いので過去ログ1〜119 までの検索結果 / 過去ログ120からさらに検索→

パスワード/

- Child Tree -