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

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

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

No.2397 の関連記事表示

<< 0 >>
■2397  Re[5]: DEVMODEの値を変更したい
□投稿者/ あや -(2006/01/26(Thu) 11:50:58)

    分類:[C#] 

    肝心なところを見逃してしまい大変申し訳ありませんでした m(__)m
    (決して意図的ではありませんのでご勘弁を・・・)

    再度内容を確認し、以下のようにすることで読み書きができました。
    勉強不足のためまだ不安なところがありますが、ひとまず動くようになりましたのでホッとしています。

    以下、現在のソースと不安なところです。

      # APIの宣言と、ロックを解放〜に自信がありません。
      # GlobalUnlock()、SetHdevmode()、GlobalFree()の引数はhMemでいいのでしょうか?
      # 私が試した限りでは、devmodePtrでも正しく動作しています。

      [StructLayout(LayoutKind.Sequential, CharSet=CharSet.Auto)]
      public struct DEVMODE {
          ・・・
      };

      [DllImport("kernel32.dll")]
      private static extern IntPtr GlobalLock(IntPtr hMem);
      [DllImport("kernel32.dll")]
      private static extern bool GlobalUnlock(IntPtr hMem);
      [DllImport("kernel32.dll")]
      private static extern IntPtr GlobalFree(IntPtr hMem);

      private void btnTest_Click(object sender, System.EventArgs e) {
       IntPtr hMem = this.printDocument.PrinterSettings.GetHdevmode(); // ハンドル取得
       IntPtr devmodePtr = GlobalLock(hMem); // ロック・ハンドルからポインタを取得
       DEVMODE dm =
           (DEVMODE)Marshal.PtrToStructure(devmodePtr, typeof(DEVMODE)); // ポインタから構造体にコピー

       dm.dmCopies = 10; // 印刷部数を10部に設定
       dm.dmCollate = 1; // 部単位で印刷
       Marshal.WriteByte(devmodePtr, dm.dmSize+720, 0); // ドライバ固定の720Byte目を0
       Marshal.StructureToPtr(dm, devmodePtr, true); // 構造体からポインタにコピー

       GlobalUnlock(hMem); // ロックを解放
       this.printDocument.PrinterSettings.SetHdevmode(hMem); // PriterSetteingsにコピー
       GlobalFree(hMem); // ハンドルを解放
      }

    よろしくお願いします。

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

■2397  Re[5]: DEVMODEの値を変更したい
□投稿者/ あや -(2006/01/26(Thu) 11:50:58)

    分類:[C#] 

    肝心なところを見逃してしまい大変申し訳ありませんでした m(__)m
    (決して意図的ではありませんのでご勘弁を・・・)

    再度内容を確認し、以下のようにすることで読み書きができました。
    勉強不足のためまだ不安なところがありますが、ひとまず動くようになりましたのでホッとしています。

    以下、現在のソースと不安なところです。

      # APIの宣言と、ロックを解放〜に自信がありません。
      # GlobalUnlock()、SetHdevmode()、GlobalFree()の引数はhMemでいいのでしょうか?
      # 私が試した限りでは、devmodePtrでも正しく動作しています。

      [StructLayout(LayoutKind.Sequential, CharSet=CharSet.Auto)]
      public struct DEVMODE {
          ・・・
      };

      [DllImport("kernel32.dll")]
      private static extern IntPtr GlobalLock(IntPtr hMem);
      [DllImport("kernel32.dll")]
      private static extern bool GlobalUnlock(IntPtr hMem);
      [DllImport("kernel32.dll")]
      private static extern IntPtr GlobalFree(IntPtr hMem);

      private void btnTest_Click(object sender, System.EventArgs e) {
       IntPtr hMem = this.printDocument.PrinterSettings.GetHdevmode(); // ハンドル取得
       IntPtr devmodePtr = GlobalLock(hMem); // ロック・ハンドルからポインタを取得
       DEVMODE dm =
           (DEVMODE)Marshal.PtrToStructure(devmodePtr, typeof(DEVMODE)); // ポインタから構造体にコピー

       dm.dmCopies = 10; // 印刷部数を10部に設定
       dm.dmCollate = 1; // 部単位で印刷
       Marshal.WriteByte(devmodePtr, dm.dmSize+720, 0); // ドライバ固定の720Byte目を0
       Marshal.StructureToPtr(dm, devmodePtr, true); // 構造体からポインタにコピー

       GlobalUnlock(hMem); // ロックを解放
       this.printDocument.PrinterSettings.SetHdevmode(hMem); // PriterSetteingsにコピー
       GlobalFree(hMem); // ハンドルを解放
      }

    よろしくお願いします。

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

■2397  Re[3]: window.open出来る画面の最大数
□投稿者/ 中博俊 -(2007/04/05(Thu) 20:43:00)
>
    2000くらいが限度だったような。
記事No.2393 のレス /過去ログ11より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -