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 >>
■43504  Re[1]: プログラムを途中で止める方法
□投稿者/ 北 -(2009/11/11(Wed) 17:51:37)
    No43503 (がながな さん) に返信
    > いつもお世話になります。基本的な質問かもしれませんが、
    > VB.NETで走らせているプログラムを途中で止めたいのですが、どのようにすれば止まるでしょうか?
    > ACCESS2000では「CTRL+BREAK」キーで止められたのですが、同じような事ってできますか?
    >

    ボタンを押すと10秒間処理が中断します。
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    System.Threading.Thread.Sleep(10000)

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

■43593  Re[2]: VS2008 C# にてVSTOにてセル範囲の指定方法
□投稿者/ msnr -(2009/11/13(Fri) 00:44:58)
    No43535 (魔界の仮面弁士 さん) に返信
    
    > 今回の場合、Sheet1 のイベントを使っているのですから
    > 「アクティブなシート」ではなく、「Sheet1」を対象にするのですよね?
    > だとしたら、Application.Cells ではなく、this.Cells を使うべきかと。
    > 
    >>Excel.Worksheets1.Range("A1:A5").Clear
    > VB.NET であればそのようにも指定できますが、C# では第2引数の省略が出来ないので、
    >  〜.Range["A1:A5", System.Type.Missing].Clear();
    > とする事になります。もしくは、
    >  〜.Range["A1", "A5"].Clear();
    > という書き方もできますね。
    
    魔界の仮面弁士 さん、ありがとうございます。
    ごもっともです。すごく勉強になります!!
    
    処理に関しては
    this.Range["A1:A5", System.Type.Missing].Clear();
    こちらで処理できました。
    もちろん〜.Range["A1", "A5"].Clear();でも出来ましたが。
    今後C#を勉強していくので前者のC#らしい記述でまずは勉強です。
    
    裕猫さんもありがとうございます!!
    >ループを使いたくないのはなぜでしょう?行数が多くなるからでしょうか?私も聞くこと
    >が多い身なので回答はないのですが、もし文字数を気にするのでしたら
    
    こちらに関しては、特にコーディングの量にはまだ意識してないのですが
    例えば、下記の例でいくと
    do
    {
        this.Application.Cells[i , 1]=i+"行";
        i++ ;
    }while(i <= 5);
    このままのソースならたかだか5回ループするだけなので
    Excel.Rangeオブジェクトへのアクセス回数は5回となりますが
    
    }while(i <= 10000);
    
    となった時は、アクセス回数は10000回となりますので非常に
    鈍足な処理となってしまうかと思い、この様に考えました。
    
    for,Whileステートメントのご指南ありがとうございます!!
    これから徐々に色々覚えながら頑張ります!!
    
    もうひとつ教えてください!!
    VSTOに関する書籍は調べてもあまり無いのですが、もし何かお勧めがあれば
    ご紹介頂けないでしょうか?
    よろしくお願いします!!
    
    しかしC#言語とは、何かとVB6.0に比べてスマートにコードが出来るように
    感じます。
    
    # 個人的にはVB/VB.NETのWith句は非常に好きなのですが・・・・
    
記事No.43519 のレス /過去ログ74より / 関連記事表示
削除チェック/

■43599  Re[3]: VS2008 C# にてVSTOにてセル範囲の指定方法
□投稿者/ 裕猫 -(2009/11/13(Fri) 09:02:25)
    No43593 (msnr さん) に返信
    > ■No43535 (魔界の仮面弁士 さん) に返信
    >
    >>今回の場合、Sheet1 のイベントを使っているのですから
    >>「アクティブなシート」ではなく、「Sheet1」を対象にするのですよね?
    >>だとしたら、Application.Cells ではなく、this.Cells を使うべきかと。
    >>
    > >>Excel.Worksheets1.Range("A1:A5").Clear
    >>VB.NET であればそのようにも指定できますが、C# では第2引数の省略が出来ないので、
    >> 〜.Range["A1:A5", System.Type.Missing].Clear();
    >>とする事になります。もしくは、
    >> 〜.Range["A1", "A5"].Clear();
    >>という書き方もできますね。
    >
    > 処理に関しては
    > this.Range["A1:A5", System.Type.Missing].Clear();
    > こちらで処理できました。
    > もちろん〜.Range["A1", "A5"].Clear();でも出来ましたが。
    > 今後C#を勉強していくので前者のC#らしい記述でまずは勉強です。
    >
    > こちらに関しては、特にコーディングの量にはまだ意識してないのですが
    > 例えば、下記の例でいくと
    > do
    > {
    > this.Application.Cells[i , 1]=i+"行";
    >  i++ ;
    > }while(i <= 5);
    > このままのソースならたかだか5回ループするだけなので
    > Excel.Rangeオブジェクトへのアクセス回数は5回となりますが
    >
    > }while(i <= 10000);
    >
    > となった時は、アクセス回数は10000回となりますので非常に
    > 鈍足な処理となってしまうかと思い、この様に考えました。
    >
    確かにおっしゃるとうりですね。Clearの使い方大変参考になりました。ありがとうございます。

    > もうひとつ教えてください!!
    > VSTOに関する書籍は調べてもあまり無いのですが、もし何かお勧めがあれば
    > ご紹介頂けないでしょうか?
    > よろしくお願いします!!
    >
    私も浅学ゆえ紹介できないのですが、同じくBASICから来た身なので共に学んでいきたいと思います。おたがいに頑張りましょう。
記事No.43519 のレス /過去ログ74より / 関連記事表示
削除チェック/

■43697  Currency 構造体を作りたいのだが
□投稿者/ みきぬ -(2009/11/16(Mon) 17:24:41)

    分類:[C#] 

    分類は一応 C# ですが、VB でも大丈夫です。

    .NET で、Currency 構造体がほしいなと思い立ちました。
    正確には、小数第3〜4位くらいまで扱える、遅くない数値型がほしいなと思って調べたところ、
    旧VB の Currency 型がほぼそのまんまであることがわかりました。
    内部的には、10000倍して long で持つ感じでよさそうです。

    さて、書いてる途中でふと思いました。これって、使うときには

    Currency c = new Currency(123.4567);

    って書かないとだめなんですかね?

    Currency c = 123.4567;

    ↑こういう風に書けないと、せっかく作ってもちょっとしょんぼり感があるのですが…。
    こういう書き方ができるのは、組み込みの型にだけ許された特権なのでしょうか?
親記事 /過去ログ75より / 関連記事表示
削除チェック/

■43701  Re[3]: Currency 構造体を作りたいのだが
□投稿者/ 魔界の仮面弁士 -(2009/11/16(Mon) 18:37:20)
    No43700 (みきぬ さん) に返信
    >>> 小数第3〜4位くらいまで扱える、遅くない数値型がほしいなと思って
    > # しかし真面目に作ろうとすると、かなり骨が折れますな、これ
    
    そもそも、System.Decimal の処理速度面でどの程度の不足を感じていて、
    それをどの程度にまで高速化したいのかを明らかにしておかないと、
    「作ったは良いけど、かえって低速になってしまった」ということもありそうです。
    
    
    >>> 旧VB の Currency 型がほぼそのまんまであることがわかりました。
    >>> 内部的には、10000倍して long で持つ感じでよさそうです。
    
    そのままで良いのであれば、OLEAUT32.DLL の VarCyFromI4 や VarCyFromStr API を使うと、
    VB で言うところの Currency を生成する事ができます。
    
    また、VarCyAdd/VarCyMul/VarCyFix/VarCySub/VarCyCmp 等を用いて
    それを演算する事もできます。……あまり意味はありませんが。
記事No.43697 のレス / END /過去ログ75より / 関連記事表示
削除チェック/

■44307  C#でbatファイル実行
□投稿者/ ヤス -(2009/12/04(Fri) 17:34:55)

    分類:[C#] 

    VisualC#上でbatファイルを実行させたいと思っております。

    batファイルの中身は

     randinit -din inp.dat -cout inpi.cod -xdim 100 -ydim 100 -topol rect -neigh bubble -rand 123
     vsom -din inp.dat -cin inpi.cod -cout inp2.cod -rlen 10000 -alpha 0.5 -radius 100 -rand 1
     vcal -din inp.dat -cin inpi.cod -cout inpiv.cod
     vcal -din inp.dat -cin inp2.cod -cout inp2v.cod -numlabs 100umat -cin inpiv.cod -ps -o inpiv.ps
     umat -cin inp2v.cod -ps -o inp2v.ps

    となっております。普通に実行はできます。

    しかしプログラム上で、

     string stExeName = @"c:\\aaa\\bbb\\test.bat";
     Process pro = new Process();
     pro.StartInfo.UseShellExecute = false;
     pro.StartInfo.RedirectStandardOutput = true;
     pro.StartInfo.CreateNoWindow = true;
     pro.StartInfo.FileName = stExeName;
     pro.Start();



     string stExeName = @"c:\\aaa\\bbb\\test.bat";
     Process pro = new Process();
     pro.StartInfo.UseShellExecute = false;
     pro.StartInfo.RedirectStandardOutput = true;
     pro.StartInfo.CreateNoWindow = true;
     pro.StartInfo.FileName = @"C:\WINDOWS\system32\cmd.exe";
     pro.StartInfo.Arguments = stExeName;
     pro.Start();

    と書いても、実行されません。
    ただ実行するだけでいいのですが… お教えいただけると有り難いです。

親記事 /過去ログ75より / 関連記事表示
削除チェック/

■44529  印刷における通りのズレについて
□投稿者/ 裕猫 -(2009/12/11(Fri) 11:44:56)

    分類:[C#] 

    開発環境
     OS:WindowsXP SP3
     言語:VisualStudio2008Pro C#で開発をしております。 印刷に辿り着きまして出力はできるのですが文字の縦の通りがずれてしまいます。
    0001製品A 0010 30 100 100 20
    0002製品B 0009 50 200 200 15
    0003製品C 0008 60 300 300 20
    0004製品D 0007 50 120 200 30
    0005製品E 0006 15 150 120 30
    0006製品F 0005 125 1250 190 10
    0007製品G 0004 80 245 40 30
    0008製品H 0003 150 345 34 30
    0009製品I 0002 100 555 56 40
    0010製品J 0001 90 420 60 50
    と印刷したいのですがどうしても
    0001製品A 0010 30 100 100 20
    0002製品B 0009 50 200 200 15
    0003製品C 0008 60 300 300 20
    0004製品D 0007 50 120 200 30
    0005製品E 0006 15 150 120 30
    0006製品F 0005 125 1250 190 10
    0007製品G 0004 80 245 40 30
    0008製品H 0003 150 345 34 30
    0009製品I 0002 100 555 56 40
    0010製品J 0001 90 420 60 50
    となってしまいます。
    while (dr.Read())
    {
    for (int c1 = 0; c1 < 6; c1++)
    {
    Tenso.OJ[c1] = dr[c1];
    }
    hin = Tenso.CSei();
    印刷.Hontai[YY] = VBStrings.LeftB(hin.品番.PadRight(8), 4) + " " + VBStrings.LeftB(hin.品名.PadRight(60), 30)
    + " " + VBStrings.LeftB(hin.発注先.PadRight(8), 4) + " " + VBStrings.RightB(hin.仕入原価.ToString().PadLeft(20), 10)
    + " " + VBStrings.RightB(hin.定価.ToString().PadLeft(20), 10) + " " + VBStrings.RightB(hin.在庫数.ToString().PadLeft(10), 5)
    + " " + VBStrings.RightB(hin.最低数.ToString().PadLeft(6), 3);
    YY++;
    }

    でデータを作り
    private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
    {
    for (int i = 0; i < 1000000; i++)
    {
    if (印刷.Hontai[i] == null) { break; }
    if ((i % 印刷.Peeji) == 0)
    {
    if (i != 0) { e.HasMorePages = false; }
    e.HasMorePages = true;
    for (int X = 0; X < 印刷.P_HD; X++)
    {
    if (印刷.Hedda[X] == null)
    {
    e.Graphics.DrawString("", new Font("MS Pゴシック", 印刷.F_SIZE), Brushes.Black, 0, X * 印刷.M_PITCH);
    }
    else
    {
    e.Graphics.DrawString(印刷.Hedda[X], new Font("MS Pゴシック", 印刷.F_SIZE), Brushes.Black, 0, X * 印刷.M_PITCH);
    }
    }
    }
    e.Graphics.DrawString(印刷.Hontai[i], new Font("MS Pゴシック", 印刷.F_SIZE), Brushes.Black, 0, (i + 印刷.P_HD + 1) * 印刷.M_PITCH);
    }
    e.HasMorePages = false;
    }
    で印刷するのですがなぜずれるのかわかりません。半角と全角の文字の大きさがおかしくなるのではないかと思っているのですが。なぜ?
    プリンターが持つ文字を使うようにすれば良いと聞きましたが、それってどう設定すればいいのか?MSゴシックだののフォントの設定方法はありますが、プリンターが持つ文字を使うようにする設定方法に辿り着けません。アドバイスをお願いいたします。
親記事 /過去ログ75より / 関連記事表示
削除チェック/

■44532  Re[1]: 印刷における通りのズレについて
□投稿者/ Jitta on the way -(2009/12/11(Fri) 12:05:00)
    No44529 (裕猫 さん) に返信
    > 印刷.Hontai[YY] = VBStrings.LeftB(hin.品番.PadRight(8), 4) + " " + VBStrings.LeftB(hin.品名.PadRight(60), 30)
    > + " " + VBStrings.LeftB(hin.発注先.PadRight(8), 4) + " " + VBStrings.RightB(hin.仕入原価.ToString().PadLeft(20), 10)
    > + " " + VBStrings.RightB(hin.定価.ToString().PadLeft(20), 10) + " " + VBStrings.RightB(hin.在庫数.ToString().PadLeft(10), 5)
    > + " " + VBStrings.RightB(hin.最低数.ToString().PadLeft(6), 3);

    StringBuilder か、string.Format を使いましょう。

    > for (int i = 0; i < 1000000; i++)

    百万の配列は、確保できないことがあるかもしれません。そんなときでも、百万個のデータ領域は、確保できることがあります。List を使いましょう。


    > e.Graphics.DrawString("", new Font("MS Pゴシック", 印刷.F_SIZE), Brushes.Black, 0, X * 印刷.M_PITCH);
    >
    Pの付かない、プロポーショナルでないフォントを使いましょう。
    > で印刷するのですがなぜずれるのかわかりません。半角と全角の文字の大きさがおかしくなるのではないかと思っているのですが。なぜ?

    プロポーショナル フォントを使っているからです。このフォントは、文字の大きさで、一文字が占める幅が変わります。


    > プリンターが持つ文字を使うようにすれば良いと聞きましたが、それってどう設定すればいいのか?

    プリンターの仕様を調べて、同じフォントを使います。が、それが有効なのは、PostScript プリンターや、XPS プリンターです。
    コードを理解してください。e.Graphics.DrowString は、紙の上に字を描く(漢字に注意)命令です。ここで作ってプリンターに送るのは、絵です。プリンターは、フォントを持つ必要がありません。
記事No.44529 のレス /過去ログ75より / 関連記事表示
削除チェック/

■44535  Re[2]: 印刷における通りのズレについて
□投稿者/ 裕猫 -(2009/12/11(Fri) 13:13:40)
    No44531 (επιστημη さん) に返信
    > 等幅フォントを指定して試してみました?
    > "MS Pゴシック"の'P'は"プロポーショナル"の意、つまり文字ごとに幅が異なります。
    >
    MS 明朝にて試したところうまくいきました。等幅フォントとプロポーショナルは知りませんでした。まだまだ勉強不足です。ありがとうございました。

    ■44532 (Jitta on the way さん) に返信
    >StringBuilder か、string.Format を使いましょう。
    >> for (int i = 0; i < 1000000; i++)
    >百万の配列は、確保できないことがあるかもしれません。そんなときでも、百万個のデータ領域は、確保できることがあります。List を使い>ましょう。
    アドバイスありがとうございます。早速使ってみます。

    おかげさまで2日間の悩みがあっというまに解決できました。ご協力ありがとうございました。
記事No.44529 のレス / END /過去ログ75より / 関連記事表示
削除チェック/

■44537  Re[2]: 印刷における通りのズレについて
□投稿者/ 裕猫 -(2009/12/11(Fri) 13:23:53)
    No44533 (みきぬ さん) に返信
    > とりあえず、ループの中で毎回 Font オブジェクトを作るのはやめたほうがいいような気がする。
    すみません。解決印つけている間に投稿してくださっていたので返事が遅れました。
    private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
    {
    Font F_font = new Font("MS 明朝", 印刷.F_SIZE);
    for (int i = 0; i < 1000000; i++)
    {
    if (印刷.Hontai[i] == null) { break; }
    if ((i % 印刷.Peeji) == 0)
    {
    if (i != 0) { e.HasMorePages = false; }
    e.HasMorePages = true;
    for (int X = 0; X < 印刷.P_HD; X++)
    {
    if (印刷.Hedda[X] == null)
    {
    e.Graphics.DrawString("", F_font, Brushes.Black, 0, X * 印刷.M_PITCH);
    }
    else
    {
    e.Graphics.DrawString(印刷.Hedda[X], F_font, Brushes.Black, 0, X * 印刷.M_PITCH);
    }
    }
    }
    e.Graphics.DrawString(印刷.Hontai[i], F_font, Brushes.Black, 0, (i + 印刷.P_HD + 1) * 印刷.M_PITCH);
    }
    e.HasMorePages = false;
    という書き方でよろしいでしょうか?Font 使い始めたばかりなので自信ないですが。
記事No.44529 のレス /過去ログ75より / 関連記事表示
削除チェック/

■44716  クラスライブラリの作り方
□投稿者/ 裕猫 -(2009/12/16(Wed) 15:49:33)

    分類:[C#] 

    開発環境
     OS:WindowsXP SP3
     言語:VisualStudio2008Pro C#

    いつもお世話になっております。先日印刷文字幅が合わず教えていただきありがとうございました。おかげさまでプログラムはできたのですが
    いつも繰り返す部分をクラスライブラリにしたいと考えました。クラスライブラリは何個か作ったのですが、今回印刷部分をクラスライブラリにしようとしたら、あれ?できない。という状況にあたってしましました。

    private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
    {
    Font F_font = new Font(印刷.F_Font, 印刷.F_SIZE);
    for (int i = 0; i < 1000000; i++)
    {
    if (印刷.Hontai[i] == null) { break; }
    if ((i % 印刷.Peeji) == 0)
    {
    if (i != 0) { e.HasMorePages = false; }
    e.HasMorePages = true;
    for (int X = 0; X < 印刷.P_HD; X++)
    {
    if (印刷.Hedda[X] == null)
    {
    e.Graphics.DrawString("", F_font, Brushes.Black, 0, X * 印刷.M_PITCH);
    }
    else
    {
    e.Graphics.DrawString(印刷.Hedda[X], F_font, Brushes.Black, 0, X * 印刷.M_PITCH);
    }
    }
    }
    e.Graphics.DrawString(印刷.Hontai[i], F_font, Brushes.Black, 0, (i + 印刷.P_HD + 1) * 印刷.M_PITCH);
    }
    e.HasMorePages = false;
    }

    ここの中身を全部クラスライブラリにして
    private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
    {
    Print.Insatu.Kaku(string A);
    }
    と呼ぶだけにしたいのですが、クラスライブラリの作成場所で
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Diagnostics;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;

    namespace Print
    {
    public class Insatu
    {
    public static void Kaku(string P, System.
    まで書くとコードスニペットでDrawingが出てこない。つーことはできないのか?という状態で止まっています。同じような作りのものでpaintはクラスライブラリ化できたので、できると思うのですが、書き方がどう悪いのかがわかりません。
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Diagnostics;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;

    namespace Print
    {
    public class Insatu
    {
    public static void Kaku(string P, System.Drawing.Printing.PrintPageEventArgs e)
        {
    Font F_font = new Font(印刷.F_Font, 印刷.F_SIZE);
    for (int i = 0; i < 1000000; i++)
    {
    if ((i % 印刷.Peeji) == 0)
    {
    if (i != 0) { e.HasMorePages = false; }
    e.HasMorePages = true;
    for (int X = 0; X < 印刷.P_HD; X++)
    {
    if (印刷.Hedda[X] == null)
    {
    e.Graphics.DrawString("", F_font, Brushes.Black, 0, X * 印刷.M_PITCH);
    }
    else
    {
    e.Graphics.DrawString(印刷.Hedda[X], F_font, Brushes.Black, 0, X * 印刷.M_PITCH);
    }
    }
    }
    e.Graphics.DrawString(印刷.Hontai[i], F_font, Brushes.Black, 0, (i + 印刷.P_HD + 1) * 印刷.M_PITCH);
    }
    e.HasMorePages = false;
    }
    }
    }
    になればいいと思うのですが、なぜSystem.Drawingがコードスニペットで出てこないのか?原因がわからず困っています。よろしくお願いいたします。
親記事 /過去ログ76より / 関連記事表示
削除チェック/

■44734  Re[9]: VistaとWaitForSingleObjectについて
□投稿者/ kashi -(2009/12/16(Wed) 20:01:27)
    No44726 (とっちゃん さん) に返信
    > ■No44722 (kashi さん) に返信
    >
    >>長い説明ありがとうございます。
    >>EnableWindow( FALSE )はすでにコーディング済みです。
    >>1.も2.も理解は出来るのですが、仮に実装できた場合、親画面でマウスでクリックしまくっても
    >>アプリケーションが応答しない旨のダイアログが表示されなくなりますか?
    >>どうも別スレッドで今までのように同期させていた方がいいような気がしてきました・・・
    >>
    > せめて試してみるくらいはしてほしいなぁ。。。と思うのですがね。
    >
    > ボタンを押すと、ダイアログ自体をEnableWindow(FALSE)をするだけのテスト用のダイアログアプリを作成して
    > 実際に動かしてみるということをするだけだと思うんですけど...
    >
    > 必要があればデバッガなども動かせばいいと思いますが、どういう状態になるかよくわかると思います。
    > 終了も、タスクマネージャからやったらどうなるか?などいろいろ試してみるといいと思いますよ。
    >

    どちらも試してみました。結果NGです。
    というのも、処理的にはどちらもうまくいっています。
    実は子画面を呼ばず、メニューやボタンクリックのイベント内で

    EnableWindow(FALSE)
    Sleep(10000)
    EnableWindow(TRUE)

    として親画面の無効化⇒10秒Wait⇒親画面の有効化
    だけのステップにし、親画面のボタンやメニュー辺りを
    マウスで連打すると「〜アプリケーションは応答していません」のダイアログが
    出てきてしまいます。
    →解決策を確認してプログラムを終了します
    →プログラムを終了します
    →プログラムの応答を待ちます
    の3択のダイアログです。
    そもそもVistaが無効化した画面に対し上記マウスの操作をすると応答なしを
    判断してダイアログが出るのが問題のように思えます。
    処理は書き込んでいただいた方のを参考に対応したと思いますが
    このVistaだけダイアログが出てきてしまうのがどうにも解決できません・・・(涙)
記事No.44696 のレス /過去ログ76より / 関連記事表示
削除チェック/

■44735  Re[10]: VistaとWaitForSingleObjectについて
□投稿者/ とっちゃん -(2009/12/16(Wed) 20:34:32)
>
    No44734 (kashi さん) に返信
    > どちらも試してみました。結果NGです。
    > というのも、処理的にはどちらもうまくいっています。
    > 実は子画面を呼ばず、メニューやボタンクリックのイベント内で
    >
    > EnableWindow(FALSE)
    > Sleep(10000)
    > EnableWindow(TRUE)
    >
    これじゃ、テストになってません。
    Sleep(10000)
    を呼び出した時点でどうやってもアプリケーションが10秒間応答しないことがOSにより保証されます。

    ですので、そのタイミングで反応を促すようなことをやれば、反応なしと帰ってくるのは当たり前です。

    私が提示したのは、EnableWindow(FALSE)「だけ」をやるようにして試してみてくださいです。

    強制的に終わらせるには、タスクマネージャでプロセスを強制終了させるか
    あらかじめデバッガで起動しておき、デバッガ側でプロセスを落とすようにすれば
    終了できます。


    > そもそもVistaが無効化した画面に対し上記マウスの操作をすると応答なしを
    > 判断してダイアログが出るのが問題のように思えます。
    これが問題かどうかではなく、現時点でそのように動作する仕様となっているので
    それをどうやれば回避できるかを検討しているのではないのですか?

    それとも、Vista側でこのメッセージを出さないようにする仕組みがあるかを質問したいのですか?

    もし、後者であれば申し訳ないですが、私はそのようなことができるかどうかすら知らないのでお手伝いできません。


    > このVistaだけダイアログが出てきてしまうのがどうにも解決できません・・・(涙)
    >
    メッセージを適切に処理すれば問題は解決します。
    少なくとも WindowsOS が「現行の延長線上にある限り」未来永劫問題になることはありません。
記事No.44696 のレス /過去ログ76より / 関連記事表示
削除チェック/

■44738  Re[11]: VistaとWaitForSingleObjectについて
□投稿者/ kashi -(2009/12/16(Wed) 21:54:06)
    No44735 (とっちゃん さん) に返信
    > ■No44734 (kashi さん) に返信
    >>どちらも試してみました。結果NGです。
    >>というのも、処理的にはどちらもうまくいっています。
    >>実は子画面を呼ばず、メニューやボタンクリックのイベント内で
    >>
    >>EnableWindow(FALSE)
    >>Sleep(10000)
    >>EnableWindow(TRUE)
    >>
    > これじゃ、テストになってません。
    > Sleep(10000)
    > を呼び出した時点でどうやってもアプリケーションが10秒間応答しないことがOSにより保証されます。
    >
    > ですので、そのタイミングで反応を促すようなことをやれば、反応なしと帰ってくるのは当たり前です。
    >
    > 私が提示したのは、EnableWindow(FALSE)「だけ」をやるようにして試してみてくださいです。
    > 強制的に終わらせるには、タスクマネージャでプロセスを強制終了させるか
    > あらかじめデバッガで起動しておき、デバッガ側でプロセスを落とすようにすれば
    > 終了できます。

    EnableWindow(FALSE)「だけ」をやる事は試しています。関数の内容通りアプリケーション自体はボタンも
    メニューも×ボタンなども一切反応しません。タスクマネージャで強制終了させました。
    ただ、無効化というのであれば私の認識ではXPの場合などダイアログの左上に(応答なし)、Vistaは
    強制終了も可能なダイアログが出るとは想定していなかったのです。
    EnableWindow(FALSE)をしたアプリケーションは一切反応しないと思っていたのです。
    HungAppTimeoutのレジストリ設定値でXPは標準で5秒、Vistaは設定がない為おそらく即応答なしと反応
    するのだと思います。現にそのようにOS上は応答なしの反応はします。

    >>そもそもVistaが無効化した画面に対し上記マウスの操作をすると応答なしを
    >>判断してダイアログが出るのが問題のように思えます。
    > これが問題かどうかではなく、現時点でそのように動作する仕様となっているので
    > それをどうやれば回避できるかを検討しているのではないのですか?
    >
    > それとも、Vista側でこのメッセージを出さないようにする仕組みがあるかを質問したいのですか?
    >
    > もし、後者であれば申し訳ないですが、私はそのようなことができるかどうかすら知らないのでお手伝いできません。

    こちらも色々ソースをいじり現象を1つ1つ確認しました。
    結果的に後者の方なのではないか?と思っています。
    EnableWindow(FALSE)の私の認識が上に書いてあるようではないのならば
    私の知識不足だったのは申し訳ないと思っています。

    >>このVistaだけダイアログが出てきてしまうのがどうにも解決できません・・・(涙)
    >>
    > メッセージを適切に処理すれば問題は解決します。
    > 少なくとも WindowsOS が「現行の延長線上にある限り」未来永劫問題になることはありません。

    このメッセージとはEnableWindow(FALSE)した後のアプリケーションにWindowsから何かしらの
    メッセージが送られてきているものを無視するようなイメージでアプリケーションで対応するという事ですか?
    その場合どこでブレークさせ、どのイベントで拾うのか私の技術では今時点では見当もつきません・・・
    申し訳ないです・・・
記事No.44696 のレス /過去ログ76より / 関連記事表示
削除チェック/

■44893  プリンタポート入力の仕方について
□投稿者/ 1323 -(2009/12/22(Tue) 18:54:27)
>

    分類:[.NET 全般] 

    プリンタポートの9ピン目をbusyに使いたいと思います。

    そこでもし他のピンの状態に関わらず9ピンに電圧を感じたらビジー状態であるというプログラムはどうしたらいいでしょうか?


    以下のように自分でつくってみたんですが


    If (InpB(&H378 = 512)) Then
    i = 0
    While (i < 10000000)
    OutB(&H378, 1)
    OutB(&H378, 0)
    i = i + 1
    End While
    Else
    '別の処理
    End If

    9ピンに電圧がきていてもきていなくても繰り返しの部分を行ってしまいます。

    何か入力設定など必要なことがあるのでしょうか?

    入力を受けるプログラム、ifの中身の書き方とかアドバイスあればお願いします。
親記事 /過去ログ76より / 関連記事表示
削除チェック/

■44899  Re[2]: プリンタポート入力の仕方について
□投稿者/ ぽぴ王子 -(2009/12/22(Tue) 19:22:31)
>
    No44893 (1323 さん) に返信
    > プリンタポートの9ピン目をbusyに使いたいと思います。
    > 
    > そこでもし他のピンの状態に関わらず9ピンに電圧を感じたらビジー状態であるというプログラムはどうしたらいいでしょうか?
    >  
    >  
    > 以下のように自分でつくってみたんですが
    >  
    > 
    >         If (InpB(&H378 = 512)) Then
    >              i = 0
    >             While (i < 10000000)
    >                  OutB(&H378, 1)
    >                  OutB(&H378, 0)
    >                 i = i + 1
    >             End While
    >         Else
    >            '別の処理
    >         End If
    >  
    > 9ピンに電圧がきていてもきていなくても繰り返しの部分を行ってしまいます。
    > 
    > 何か入力設定など必要なことがあるのでしょうか?
    > 
    > 入力を受けるプログラム、ifの中身の書き方とかアドバイスあればお願いします。
    
    回答の前に、とりあえずいくつか。
    
    (1) ソースコードを載せるときは、投稿モードに「図表モード (ソースコードを貼る場合はこちらを使用)」というのを選びましょう。
    (2) 分類は「.NET 全般」ではないですよね。たぶん「VB6 以前」だと思いますが、回答をもらうためには正しい分類にしましょう。
    (3) Webサイトに入力したサイトは、そのサイトを参考にしたということですよね?本文中にちゃんと書いた方がいいかと思います。
    
    それをふまえた上で。
    
    >         If (InpB(&H378 = 512)) Then
    
    ここが
    
    >         If (InpB(&H378) And &H80) <> 0 Then
    
    なんじゃないかしらん?と思いますが、どうでしょう。
    まずはビット演算について調べた方がいいかもですね。
記事No.44893 のレス /過去ログ76より / 関連記事表示
削除チェック/

■45314  Re[5]: 【C#】AU携帯への添付ファイル送信ができません
□投稿者/ もりお -(2010/01/09(Sat) 19:39:27)
    2010/01/09(Sat) 20:42:00 編集(投稿者)

    No45310 (アキ さん) に返信
    > メールはテキストメールなので、「ソースの表示」はできません。
    > 私が思っているのと違うソースの表示なのでしょうか?

    説明不足でした。
    ごうさんがおっしゃるようにメール本文も含めたソースです。
    こんな感じのものです。

    Return-Path: <...>
    Received: from ...
    by mx.google.com with ESMTPS id 20sm1480767iwn.9.2010.01.09.03.05.04
    (version=SSLv3 cipher=RC4-MD5);
    Sat, 09 Jan 2010 03:05:06 -0800 (PST)
    Message-ID: <...>
    Date: Sat, 09 Jan 2010 20:05:07 +0900
    From: ... <...>
    User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; ja; rv:1.9.1.5) Gecko/20091204 Thunderbird/3.0
    MIME-Version: 1.0
    To: ...
    Subject: Subject
    Content-Type: multipart/mixed;
    boundary="------------010000010808070006060902"

    This is a multi-part message in MIME format.
    --------------010000010808070006060902
    Content-Type: text/plain; charset=ISO-2022-JP
    Content-Transfer-Encoding: 7bit

    Body

    --------------010000010808070006060902
    Content-Type: image/jpeg;
    name="..."
    Content-Transfer-Encoding: base64
    Content-Disposition: attachment;
    filename*0="..."

    /9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAkGBwgHBgkICAgLCgkLDhcPDg0NDh0VFhEXIh4k4k
    ...

    Outlook で見れないようでしたら、Thunderbird を使ったり Gmail を利用し
    たりで見ることができます。

    > AlternateViewに本文と添付ファイルを別々に追加し送信しようと試みています。
    > AlternateViewに複数Addし、それを1つのメールとして送信することは可能なのでしょうか?

    おそらく送信することは出来ると思いますが、受信側で期待した通りに解釈さ
    れない可能性が高いのが悩みどころです。

    まずは、ソースを閲覧できる環境を用意した方が善いかと思います。
    もしかしたら、古い形式である System.Web.Mail を利用する必要があるかも
    しれませんし .NET Framework の標準ライブラリーでは対応できないかもしれ
    ません。期待するメールのソースがどの様なものか明確になれば詳しいかたが
    教えてくださるはず・・・
記事No.45277 のレス /過去ログ77より / 関連記事表示
削除チェック/

■45897  Windows Mobile の RegisterClass
□投稿者/ こう -(2010/01/21(Thu) 17:42:25)

    分類:[C#] 

    訳あって以下の環境で非表示ウィンドウの作成を行おうと考えております。

    OS:Windows Mobile 6.1
    言語:C#(コンソールアプリケーション)

    ところが、RegisterClassW 関数を実行すると「NotSupportedException」の
    例外が発生します。

    delegate を使用し、WndProc関数のアドレス指定に問題があると思われますが、
    解決方法が見つからず困っております。
    情報をお願いします。

    以下、長くなりますが、ソースになります。
    ----------------------------------------------------------------------

    class Program
    {
    private delegate int WndProcDelegate(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam);
    private static WndProcDelegate wProc = null;

    private const int WHITE_BRUSH = 0;
    private static string appName = "testApp";

    public enum ClassStyles : uint
    {
    CS_VREDRAW = 0x0001,
    CS_HREDRAW = 0x0002,
    CS_DBLCLKS = 0x0008,
    CS_OWNDC = 0x0020,
    CS_CLASSDC = 0x0040,
    CS_PARENTDC = 0x0080,
    CS_NOCLOSE = 0x0200,
    CS_SAVEBITS = 0x0800,
    CS_BYTEALIGNCLIENT = 0x1000,
    CS_BYTEALIGNWINDOW = 0x2000,
    CS_GLOBALCLASS = 0x4000,
    CS_IME = 0x00010000,
    CS_DROPSHADOW = 0x00020000
    }

    [StructLayout(LayoutKind.Sequential)]
    struct WNDCLASS
    {
    public uint style;
    [MarshalAs(UnmanagedType.FunctionPtr)]
    public WndProcDelegate lpfnWndProc;
    public int cbClsExtra;
    public int cbWndExtra;
    public IntPtr hInstance;
    public IntPtr hIcon;
    public IntPtr hCursor;
    public IntPtr hbrBackground;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
    public string lpszMenuName;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
    public string lpszClassName;
    }

    [DllImport("coredll.dll")]
    private static extern IntPtr GetStockObject(int fnObject);

    [DllImport("coredll.dll", SetLastError = true)]
    private static extern ushort RegisterClassW(ref WNDCLASS lpWndClass);

    static void Main(string[] args)
    {
    WNDCLASS wc = new WNDCLASS();
    wProc = new WndProcDelegate(WndProc);

    try
    {
    wc.style = (uint)(ClassStyles.CS_HREDRAW | ClassStyles.CS_VREDRAW);
    wc.lpfnWndProc = wProc;
    wc.cbClsExtra = 0;
    wc.cbWndExtra = 0;
    wc.hInstance = IntPtr.Zero;
    wc.hIcon = IntPtr.Zero;
    wc.hCursor = IntPtr.Zero;
    wc.hbrBackground = GetStockObject(WHITE_BRUSH);
    wc.lpszMenuName = string.Empty;
    wc.lpszClassName = appName;

    if (RegisterClassW(ref wc) != 0)
    {
    // CreateWindowExW コール

    // Message ループ
    }
    }
    catch (Exception ex)
    {
    int err = Marshal.GetLastWin32Error();
    System.Diagnostics.Debug.WriteLine(ex.Message);
    }

    }

    private static int WndProc(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam)
    {
    return 0;
    }
    }

    ----------------------------------------------------------------------
親記事 /過去ログ78より / 関連記事表示
削除チェック/

■46603  Re[3]: VBからメール送信できない
□投稿者/ もりお -(2010/02/06(Sat) 10:47:58)
    No46590 (カレポテ さん) に返信

    > sc.Timeout = 3000

    タイムアウトが短すぎるのではないでしょうか。
    既定値の 100000 をセットしてみてはいかがでしょうか。

    他に確認点として SSL は Explicit SSL でしょうか。
    それとも Implicit SSL でしょうか。
    SmtpClient は Implicit SSL には対応していないです。

    たとえば Gmail の場合
    ポート 587 を利用した TLS は Explicit SSL
    ポート 465 を利用した SSL は Implicit SSL
記事No.46590 のレス /過去ログ79より / 関連記事表示
削除チェック/

■46607  Re[4]: VBからメール送信できない
□投稿者/ カレポテ -(2010/02/06(Sat) 11:55:36)
    もりおさん返信ありがとうございます。

    > 既定値の 100000 をセットしてみてはいかがでしょうか。
    ↑試してみましたが、うまくいきませんでした。

    > SmtpClient は Implicit SSL には対応していないです。
    ↑はじめて知りました。ありがとうございます。

    > ポート 465 を利用した SSL は Implicit SSL
    それでは、Implicit SSLをVBから送る場合は
    どのようにすればよろしいのでしょうか?
記事No.46590 のレス /過去ログ79より / 関連記事表示
削除チェック/

<前の20件 | 次の20件>

<< 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 >>

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

パスワード/

- Child Tree -