DOBON.NETプログラミング道掲示板

■ 「新規作成」から投稿できます。
■ マルチポストされた投稿を見つけたときは、その投稿に返信することによりご報告ください。その際は匿名で投稿し、マルチポストされている場所を併記してください。
■ スパム対策のため、メールアドレスの先頭に"_"という文字が付加されています。
RSS 2.0 RSS 2.0 | RSS 0.91 | 携帯電話用 | 自分専用のアイコンを使用するには | 掲示板への要望 | 管理人に連絡 | お気楽掲示板
■ 24時間以内に作成されたスレッドは New で表示されます。
■ 24時間以内に更新されたスレッドは UpDate で表示されます。

記事リスト ( )内の数字はレス数
NomalDataGridViewの複数行選択で歯抜け選択を無効にしたい(2) | Nomal証券会社へのログイン(1) | Nomalユーザーフォームに埋め込んだAutoCADの変化を捉える(0) | Nomalシステムドライブ以外へのページング設定が反映されない(5) | Nomalブラウザでコピーした透過PNGを貼り付けたい(4) | Nomalforeachでループ回数を取得(2) | Nomalbitmapが保存できない(2) | Nomal特定ピクセルで画像を読み込みたい(2) | NomalDataGridViewでAlt+Enterで改行したい(2) | Nomal全角シフト中にアクセスキーが効かない(5) | NomalDataAdapter.Updateで構文エラー(6) | Nomal抽象クラスで実装したクラスの情報を知る(3) | NomalProcessクラスからbatファイル実行後、KILLできない(2) | Nomal画面遷移(モーダルとモードレス)(2) | Nomal兆億万表記の文字列を数値に変換できる?(3) | NomalGetDirectoriesでルートを指定するとエラーになる(3) | NomalLinqにおける明示的型指定の方法(3) | Nomal2つのradの数値から1つの角度を求めるコードを改善できますか?(C++)(2) | Nomalコンソールアプリで、WebView2の利用(2) | NomalEntity Frameworkは、使えるか?(2) | Nomalデータベースからのテーブル名一覧の効率的な取得方法(3) | NomalC#のlong型でオーバーフローになる(2) | Nomal正規表現のパターン表記方法(2) | NomalWebView2によるスクレ―ピング(4) | Nomalこういた物を作れますか?(2) | Nomalツールボックスにtableadapterが表示されない(1) | NomalC# Chart X軸上のグラフ表示(3) | NomalVB.NETでBluetoothデバイスの電池残量を取得する方法(3) | Nomalクリスタルレポート 明細部のサブレポート(0) | Nomal重なったPictureBox同士を透過する方法(7) | NomalWindowsフォームデザイナについて(3) | NomalVB.NETからcmdでpingを実行した時の結果(5) | Nomalvb.netでExcelファイル操作(7) | Nomalvb.netでのExcelファイルそうさ(2) | Nomalキーボード+バーコードでキーボード入力を無効にしたい(6) | Nomalファイルとして配置したマニフェストを優先したい(2) | NomalTabPageの背景色(5) | NomalVB2022でクリスタルレポートが開けない(2) | NomalC#でJpeg圧縮のTiffファイルを作成したい(4) | Nomalエクセルのみ監視ができない(2) | NomalDataGridViewのVirtualModeを有効した場合の実装方法(4) | NomalExcelの数値 -> 日付みたいな関数?(2) | NomalDrawstringでの透過文字作成(3) | Nomaljumbo icon(256x256)が存在するか知る方法(6) | NomalSpinWait()を使う理由(2) | Nomalantecedentってなんですか?(2) | Nomalワンタイムパスワードのサイトに自動ログインしてアクセストークンを得る(3) | Nomalstyle.displayだと効率悪いから違うやり方をしたいです。(5) | Nomalテーブルを順番通りに直すプログラムを外部で読み込めるようにしたいです。(4) | NomalJSONの複雑な入れ子内部の値を取りたい。(3) | Nomalグリッド表示レコードをJSONに変換(5) | Nomalシステム時計の設定(3) | NomalSeleniumで開いているページのTableを編集したい(5) | Nomalソケット通信入門 ひらがな(4) | NomalVisual Basicでエラーが出る(3) | Nomalインストーラにて、ローミングフォルダにファイルを配置したい(0) | NomalRGB値の所得(2) | NomalVB.net からAccessDBへの接続(2) | Nomal時間変数(文字列)の扱い(4) | Nomal画像のスクロール(6) | Nomalタイマーの一括処理(6) | NomalTreeViewとDataGridViewのスクロールを同期(シンクロ)させたい(4) | NomalTreeViewの現在位置とDataGridViewの現在位置を合わせたい(7) | Nomalフォームのリサイズ時にDataGridViewが再描画されない(4) | NomalPDFをフォーム上で表示させる方法につきまして(4) | NomalPictureBoxの画像を連続保存(11) | NomalテキストボックスのValidatingイベントよりも先に発生するボタン発生イベントは何でしょう?(2) | Nomal継承元フォームで各フォームのボタン動作を検知したい(3) | NomalWindowsエクスプローラからのドラッグ&ドロップ(2) | Nomalラジオボタンの一括設定(7) | Nomalクリックイベントでexeを作成できるか(2) | Nomal作成した白黒画像をWordに貼り付けてから「図として保存」(8) | Nomalアセンブリ情報が載らない(1) | NomalRichTextBoxのテキストをpictureBOXへ(12) | Nomalc#で日付型の定義の仕方で質問があります。(2) | Nomal先頭に空白(スペース)があるファイルを読み込んでRichTextBoxへ書き出すとスペースが削除える(6) | NomalExcel Com オブジェクトの増殖(13) | Nomal二次元マップから値の取得(1) | NomalアプリでHDMIへ出す解像度を変えたい(4) | NomalDataGridViewのドロップダウンリストの表示と選択後の値を分けたい(1) | Nomal列車の時間ごとの位置情報を表示したいです。(2) | Nomal画像の中心を基点に回転(4) | NomalDataGridViewの行ヘッダーに行番号を表示した時のエラー(4) | NomalタッチキーボードでIMEを自動で切替えたい(6) | NomalVSTOによるエクセルアドインのインストーラーでのアップデート(1) | NomalMP4動画を再生する方法について(5) | NomalVB.NetでVB6.0と同じFontを指定しても同様に印刷されない(9) | NomalLabelで文字単位の背景色(7) | NomalLableのカラー色を文字変数から変更したい(5) | NomalUrlにアクセスするとダウンロードされるファイルを捕まえる(2) | Nomalタブレット等でスワイプによるスクロールを実装(2) | NomalTEXTBOXのプロパティを文字列に(7) | NomalPDFをフォーム上で表示させる方法につきまして(6) | NomalChart X軸上の描画を切り替えたい(0) | NomalRichTextBoxへのドラッグ&ドロップしたExcelファイルの扱い(3) | Nomal特定のPCだけ発生する「パディングは無効なので削除できません」のエラーの原因(6) | NomalASP.NET WebApi内でXmlReader.Create(url)がタイムアウトする(4) | NomalDatagridViewでファンクションキーを止めたい(5) | Nomal表示動作が重くなる(3) | NomalDataGridViewの特定セルにボタンを配置する方法(5) |



■記事リスト / ▼下のスレッド
■35626 / 親記事)  DataGridViewの複数行選択で歯抜け選択を無効にしたい
□投稿者/ HKane 一般人(1回)-(2024/09/20(Fri) 15:16:15)
  • アイコン環境/言語:[,NETFramework4.0、VB.net2010、Windows7~10] 
    分類:[.NET] 

    DataGridViewで、
    SelectionMode = FullRowSelect
    MultiSelect = True
    の状態にすると、複数行選択が可能ですが、
    1行のみ、または、連続行選択のみを許し、
    例えば10行あるデータで2行目と5行目のみの選択のような歯抜け選択を許さないようにする方法はあるでしょうか?

    また、DataGridViewで、ctrlキーを無効にする(歯抜け選択をできないようにするための手段)方法はあるでしょうか?

違反を報告
引用返信

▽[全レス2件(ResNo.1-2 表示)]
■35627 / ResNo.1)  Re[1]: DataGridViewの複数行選択で歯抜け選択を無効にしたい
□投稿者/ 魔界の仮面弁士 大御所(1576回)-(2024/09/20(Fri) 18:58:46)
  • アイコン
    No35626に返信(HKaneさんの記事)
    > 1行のみ、または、連続行選択のみを許し、
    > 例えば10行あるデータで2行目と5行目のみの選択のような歯抜け選択を許さないようにする方法はあるでしょうか?
    
    泥臭い方法しか思いつきませんでした。
    
    Public Class Form1
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            DataGridView1.AllowUserToAddRows = False
            DataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect
            DataGridView1.ColumnCount = 10
            DataGridView1.RowCount = 1000
        End Sub
    
        Private Sub DataGridView1_SelectionChanged(sender As Object, e As EventArgs) Handles DataGridView1.SelectionChanged
            Dim selectedRows = DataGridView1.SelectedRows.OfType(Of DataGridViewRow)().ToArray()
            Dim firstRow = selectedRows.FirstOrDefault()
            Dim lastRow = selectedRows.LastOrDefault()
            If If(firstRow, lastRow) Is Nothing Then
                Return
            End If
            Dim firstRowIndex = selectedRows.Min(Function(r) r.Index)
            Dim lastRowIndex = selectedRows.Max(Function(r) r.Index)
            If selectedRows.Length < (lastRowIndex - firstRowIndex) + 1 Then
                Dim unselectedRows = DataGridView1.Rows.Cast(Of DataGridViewRow)() _
                    .Skip(firstRowIndex) _
                    .Take(lastRowIndex - firstRowIndex + 1) _
                    .Where(Function(r) Not r.Selected) _
                    .ToArray()
                For Each row In unselectedRows
                    row.Selected = True
                Next
            End If
        End Sub
    End Class

違反を報告
引用返信
■35628 / ResNo.2)  Re[1]: DataGridViewの複数行選択で歯抜け選択を無効にしたい
□投稿者/ KOZ 一般人(39回)-(2024/09/21(Sat) 18:58:18)
  • アイコン
    No35626に返信(HKaneさんの記事)
    > DataGridViewで、
    > SelectionMode = FullRowSelect
    > MultiSelect = True
    > の状態にすると、複数行選択が可能ですが、
    > 1行のみ、または、連続行選択のみを許し、
    > 例えば10行あるデータで2行目と5行目のみの選択のような歯抜け選択を許さないようにする方法はあるでしょうか?
    
    
    DataGridView を継承したコントロールを作り、SetSelectedRowCore をオーバーライドして、すでに選択された行が存在する場合、上の行か下の行が選択状態かどうかをチェックするといいのでは。
    
    Public Class DataGridViewEx
        Inherits DataGridView
    
        Protected Overrides Sub SetSelectedRowCore(rowIndex As Integer, selected As Boolean)
            If selected AndAlso SelectedRows.Count > 0 Then
                If Not IsRowSelected(rowIndex + 1) AndAlso Not IsRowSelected(rowIndex - 1) Then
                    selected = False
                End If
            End If
            MyBase.SetSelectedRowCore(rowIndex, selected)
        End Sub
    
        Private Function IsRowSelected(rowIndex As Integer) As Boolean
            If rowIndex >= 0 AndAlso rowIndex < RowCount Then
                Return Rows(rowIndex).Selected
            End If
            Return False
        End Function
    
    End Class
    

違反を報告
引用返信

■記事リスト / レス記事表示 → [親記事-2]



■記事リスト / ▼下のスレッド / ▲上のスレッド
■35624 / 親記事)  証券会社へのログイン
□投稿者/ Takuya 一般人(1回)-(2024/07/27(Sat) 13:01:40)
  • アイコン環境/言語:[VB.NET] 
    分類:[.NET] 

    visual studio 2022を使用しています。
    SBI証券のページを開き、指定したIDとパスワードでログインするという処理を行いたいのですが、調べてもわからず、ご教示いただけますでしょうか。

    1つのPCで複数の人が使用しているため、VBからログアウトとログインの処理を
    行いたいと思っています。

    SBI:https://site2.sbisec.co.jp/ETGate/
違反を報告
引用返信

▽[全レス1件(ResNo.1-1 表示)]
■35625 / ResNo.1)  Re[1]: 証券会社へのログイン
□投稿者/ とあるひと 一般人(1回)-(2024/09/17(Tue) 14:15:54)
  • アイコンNo35624に返信(Takuyaさんの記事)
    > visual studio 2022を使用しています。
    > SBI証券のページを開き、指定したIDとパスワードでログインするという処理を行いたいのですが、調べてもわからず、ご教示いただけますでしょうか。
    >
    > 1つのPCで複数の人が使用しているため、VBからログアウトとログインの処理を
    > 行いたいと思っています。
    >
    > SBI:https://site2.sbisec.co.jp/ETGate/

    Seleniumを使えばログインはできるようになると思います。
    詳しくはこちらをご覧ください。
    https://tekutekku.com/csharp_selenium_basic_code/
違反を報告
引用返信

■記事リスト / レス記事表示 → [親記事-1]



■記事リスト / ▼下のスレッド / ▲上のスレッド
■35623 / 親記事)  ユーザーフォームに埋め込んだAutoCADの変化を捉える
□投稿者/ SASAYAN 一般人(1回)-(2024/07/21(Sun) 17:46:55)
  • アイコン環境/言語:[VB.NET FrameWork4.8] 
    分類:[.NET] 

    VB.NETでAutoCADに連携する方法で困っています。
    起動中のAutoCADに複数のドキュメント(ファイル)が開いているとします。
    ファイルタブが複数あって、これをクリックして切り替えるたびに発生する
    イベントを捉えてリストボックスにレイヤーのリストを表示させたいです。
    
    ファイルタブの切り替えを捉えるのにどの様に記述すればよいか困っています。
    コードの40行目あたりの
     Dim docManager As DocumentCollection = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager
     AddHandler docManager.DocumentActivated, AddressOf Me.DocumentActivated
    ここで引っ掛かってしまいます。
    
    現在のコード
    Imports System.Runtime.InteropServices
    Imports Autodesk.AutoCAD.Interop
    Imports Autodesk.AutoCAD.Interop.Common
    Imports Autodesk.AutoCAD.Runtime
    Imports Autodesk.AutoCAD.ApplicationServices
    Imports Autodesk.AutoCAD.DatabaseServices
    Imports Autodesk.AutoCAD.Geometry
    Imports Microsoft.VisualBasic
    
    Public Class Form1
        Private acadApp As AcadApplication
    
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Try
                ' 新しいAutoCADアプリケーションを作成
                acadApp = New AcadApplication()
                acadApp.Visible = True
            Catch ex As System.Runtime.InteropServices.COMException
                MessageBox.Show("AutoCADのインスタンスを作成できませんでした: " & ex.Message)
                Return
            Catch ex As Exception
                MessageBox.Show("予期しないエラーが発生しました: " & ex.Message)
                Return
            End Try
    
            If acadApp Is Nothing Then
                MessageBox.Show("AutoCADアプリケーションを初期化できませんでした。")
                Return
            End If
    
            ' AutoCADのウィンドウをForm1の指定位置に埋め込む
            Dim acadHandle As IntPtr = New IntPtr(acadApp.HWND)
            SetParent(acadHandle, Me.Handle)
    
            ' 初期位置とサイズを設定
            ResizeAutoCADWindow()
    
            ' Form1のリサイズイベントにハンドラを追加
            AddHandler Me.Resize, AddressOf Form1_Resize
    
            ' 初回のレイヤーリストを取得して表示
            PopulateLayerList()
    
            ' ドキュメントアクティベートイベントの追加
            Dim docManager As DocumentCollection = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager
            AddHandler docManager.DocumentActivated, AddressOf Me.DocumentActivated
        End Sub
    
        Private Sub Form1_Resize(sender As Object, e As EventArgs)
            ' AutoCADウィンドウをForm1の新しいサイズに合わせてリサイズ
            ResizeAutoCADWindow()
        End Sub
    
        Private Sub ResizeAutoCADWindow()
            Dim acadHandle As IntPtr = New IntPtr(acadApp.HWND)
    
            ' panelControlsの右側にAutoCADウィンドウを表示する
            Dim leftPosition As Integer = panelControls.Width
            Dim topPosition As Integer = 0
            Dim width As Integer = Me.ClientSize.Width - panelControls.Width
            Dim height As Integer = Me.ClientSize.Height
    
            MoveWindow(acadHandle, leftPosition, topPosition, width, height, True)
        End Sub
    
        Private Sub PopulateLayerList()
            Try
                ' Layer_LBをクリア
                If Layer_LB Is Nothing Then
                    MessageBox.Show("Layer_LBが初期化されていません。")
                    Return
                End If
                Layer_LB.Items.Clear()
    
                ' AutoCADの現在のドキュメントを取得
                Dim activeDoc As AcadDocument = acadApp.ActiveDocument
    
                ' レイヤーを取得してリストボックスに追加
                For Each layer As AcadLayer In activeDoc.Layers
                    Layer_LB.Items.Add(layer.Name)
                Next
            Catch ex As Exception
                MessageBox.Show("レイヤーリストの取得中にエラーが発生しました: " & ex.Message)
            End Try
        End Sub
    
        ' ドキュメントがアクティブになったときにレイヤーリストを更新する
        Private Sub DocumentActivated(sender As Object, e As DocumentCollectionEventArgs)
            PopulateLayerList()
        End Sub
    
        ' WinAPI関数の宣言
        <System.Runtime.InteropServices.DllImport("user32.dll")>
        Private Shared Function SetParent(hWndChild As IntPtr, hWndNewParent As IntPtr) As IntPtr
        End Function
    
        <System.Runtime.InteropServices.DllImport("user32.dll")>
        Private Shared Function MoveWindow(hWnd As IntPtr, x As Integer, y As Integer, nWidth As Integer, nHeight As Integer, bRepaint As Boolean) As Boolean
        End Function
    
        Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
            ' AutoCADアプリケーションをクリーンアップ
            If acadApp IsNot Nothing Then
                Try
                    acadApp.Quit()
                Catch ex As Exception
                    ' 例外が発生しても続行
                Finally
                    ' COMオブジェクトの解放
                    Marshal.ReleaseComObject(acadApp)
                    acadApp = Nothing
                End Try
            End If
    
            ' ドキュメントアクティベートイベントの削除
            Dim docManager As DocumentCollection = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager
            RemoveHandler docManager.DocumentActivated, AddressOf Me.DocumentActivated
        End Sub
    End Class
    
    ここまでフォーム上にAutoCADを埋め込み表示させるまでできましたが
    肝心のAutoCADの変化を捉える部分でうまくいきません。
    よろしくお願いします。

違反を報告
引用返信



■記事リスト / ▼下のスレッド / ▲上のスレッド
■35616 / 親記事)  システムドライブ以外へのページング設定が反映されない
□投稿者/ ぺんたごん 一般人(8回)-(2024/06/10(Mon) 17:07:25)
  • アイコン環境/言語:[Windows 11 Pro 21H2] 
    分類:[その他] 

    ごぶさたしております。
    今回はプログラミングに関係ない話になってしまいますが
    情報が見つからず藁をも掴む思いで質問させていただきます。
    
    ■環境
    Windows 11 Pro 21H2
    C   … NVMe SSD 256 GB
    D   … SATA HDD 1000 GB
    Mem … 16 GB
    
    ■実施した内容と発生した現象
    Visual Studio をはじめとした、一部ファイルが C に強制的に入るソフトウェアを
    多数インストールしているため C の空き領域が足りなくなり、
    ページングを D に移行しようとしました。
    
    仮想メモリ設定で
      C … ページングなし
      D … 8192 -8192 MB
    にしましたが、再起動後に構成エラーとなり再設定を促されました。
    そこで次に
      C … 1024 - 1024 MB
      D … 8192 - 8192 MB
    としたらエラーは起きなくなったのですが、パフォーマンスオプション画面の
    仮想メモリ欄を見ると「すべてのドライブの総ページングファイルサイズ」が
    1024 MB になっており、D から pagefile.sys が消えていました。
    (しかし仮想メモリ設定画面の D には 8192 - 8192 と設定されたまま)
    
    何度設定しても、たまに D の pagefile.sys が残ったまま消えないことが
    ありつつも OS の認識としては C のページングのみとなっています。
    
    USBメモリにページング設定した場合は認識タイミングによってそういったことが起こるようですが
    SATA接続のHDDでそれが起きるのは何故でしょうか
    そして解決する手段は存在するのでしょうか…
    
    以上よろしくお願いします

違反を報告
引用返信

▽[全レス5件(ResNo.1-5 表示)]
■35617 / ResNo.1)  Re[1]: システムドライブ以外へのページング設定が反映されない
□投稿者/ 魔界の仮面弁士 大御所(1575回)-(2024/06/11(Tue) 11:13:40)
  • アイコンNo35616に返信(ぺんたごんさんの記事)
    > Visual Studio をはじめとした、一部ファイルが C に強制的に入るソフトウェアを
    > 多数インストールしているため C の空き領域が足りなくなり、
    > ページングを D に移行しようとしました。

    自分の場合は、C: ドライブ配下のフォルダーの一部
    (C:\Program Files\dotnet\ など)を、
    別ドライブ上への「シンボリックリンク」とすることで回避しています。

    これにより、容量の大きいアプリケーション群を、
    取り扱い上のパス表記は C:\ 配下のままでアクセスさせつつ、
    実ファイルは、 D: や E: に配置させる構成にすることができます。
    https://www.vb-user.net/junk/replySamples/2024.06.11.09.46/SymLinkDir.png
    https://atmarkit.itmedia.co.jp/ait/articles/1306/07/news111.html

    別案として、パーティション丸ごと割り当てる方法もありますが、
    自分の場合はシンボリックリンクを使うことの方が多いです。
    https://atmarkit.itmedia.co.jp/ait/articles/0002/05/news001.html



    > 再起動後に構成エラーとなり再設定を促されました。
    エラーメッセージの内容を教えていただけますか。


    > 「すべてのドライブの総ページングファイルサイズ」が
    > 1024 MB になっており、D から pagefile.sys が消えていました。
    シャットダウン時に仮想メモリのページファイルをクリアする設定にしているのでしょうか?
    https://www.softwareok.com/?seite=faq-Windows-8&faq=118#Image1


    > (しかし仮想メモリ設定画面の D には 8192 - 8192 と設定されたまま)
    類似の事例は幾つか報告されていますが…今のところ、
    「システムの復元」を使って、正常時時点の復元ポイントに戻すことで復帰したという事例があったぐらいです。
    https://www.techguy.org/threads/cannot-allocate-virtual-memory-allocated-always-0mb.253368/

    設定値が不自然な場合、Windows はそれを無視して独自の動的設定を使用する場合があるという
    記事がありましたが、今回の事象がそれにあたるのかは分かりません。
    https://www.computerhope.com/forum/index.php?topic=46686.0

    古い記事も参考にすると
    KB315270 (2007/12/01)
     ⇒ ボリュームに対する適切な NTFS アクセス許可が System アカウントと Administrators アカウントになかった
     ⇒⇒ NTFS ボリュームに対するフル コントロール権限を System アカウントと Administrators アカウントに与える
    KB316528 (2006/10/19)
     ⇒ 特定のチップセットで発生する問題
     ⇒⇒ BIOS/UEFI の更新を検討
    といったものもありましたが…。

    今のところ、それ以外の対処法は見つかっていません。
    https://www.sevenforums.com/performance-maintenance/297783-windows-doesnt-use-page-file-different-drive.html
    https://answers.microsoft.com/en-us/windows/forum/all/total-paging-file-for-all-drives-doesnt-include/d8676448-b61b-47c9-91dc-0ef518a595d7
    https://www.elevenforum.com/t/cant-change-pagefile-to-the-way-it-was-before-even-after-following-instructions-on-how-to-do-so.6208/
違反を報告
引用返信
■35618 / ResNo.2)  Re[2]: システムドライブ以外へのページング設定が反映されない
□投稿者/ ぺんたごん 一般人(9回)-(2024/06/12(Wed) 08:20:49)
  • アイコン
    返信ありがとうございます
    
    >>再起動後に構成エラーとなり再設定を促されました。
    > エラーメッセージの内容を教えていただけますか。
    Cのページングを無しにすると
    「コンピューターの開始時にページングファイル構成に問題が発生したため、一時ページングファイルが作成されました。
    前ディスクドライブの総ページングファイルサイズが指定したサイズよりも大きくなっている可能性があります。」
    となります。
    そして実際、10GBほどのページングファイルがCに作成されました。
    
    > シャットダウン時に仮想メモリのページファイルをクリアする設定にしているのでしょうか?
    > https://www.softwareok.com/?seite=faq-Windows-8&faq=118#Image1
    [ローカル ポリシー]、[セキュリティ オプション]、[シャットダウン: 仮想メモリのページファイルをクリアする]
    を確認しましたが「無効」となっていました。
    
    
    正直、原因が全くわからないので、ひとまず
    仕方なくCに8192MB設定してDは無しにしています…
    

違反を報告
引用返信
■35619 / ResNo.3)  Re[3]: システムドライブ以外へのページング設定が反映されない
□投稿者/ KOZ 一般人(37回)-(2024/06/12(Wed) 22:59:06)
  • アイコンNVMe と HDD の速度差で現象起きてるんですかね?

    コマンドで設定してみます?

    管理者権限でコマンドプロンプトを立ち上げます。

    > C … 1024 - 1024 MB
    > D … 8192 - 8192 MB

    にするのであれば

    REM ページファイルの自動管理を無効にする
    wmic computersystem where name="%computername%" set AutomaticManagedPagefile=False
    REM ページファイル削除
    wmic pagefileset where name="C:\\pagefile.sys" delete
    wmic pagefileset where name="D:\\pagefile.sys" delete
    REM Cドライブを設定
    wmic pagefileset create name="C:\\pagefile.sys"
    wmic pagefileset where name="C:\\pagefile.sys" set InitialSize=1024,MaximumSize=1024
    REM Dドライブを設定
    wmic pagefileset create name="D:\\pagefile.sys"
    wmic pagefileset where name="D:\\pagefile.sys" set InitialSize=8192,MaximumSize=8192
    REM 再起動
    shutdown /r /t 0

違反を報告
引用返信
■35620 / ResNo.4)  Re[4]: システムドライブ以外へのページング設定が反映されない
□投稿者/ KOZ 一般人(38回)-(2024/06/12(Wed) 23:09:50)
  • アイコンちなみに、

    wmic pagefile list /format:list

    と打つと、現在の設定値が表示されます。
    表示された値を ChatGPT などの AI に聞いてみると、何かわかるかもしれません。

    AllocatedBaseSize=36864
    CurrentUsage=0
    Description=C:\pagefile.sys
    InstallDate=20240427203020.906456+540
    Name=C:\pagefile.sys
    PeakUsage=0
    Status=
    TempPageFile=FALSE
    と出てきたのですが、"それぞれのパラメタについて説明してください"と聞くと

    ・ページファイルの初期サイズは36,864MB(36GB)。
    ・現在使用中のページファイルのサイズは0MB。
    ・ページファイルのパスはC:\pagefile.sys。
    ・ページファイルが作成されたのは2024年4月27日20時30分20秒。
    ・ページファイルのピーク使用量は0MB。
    ・ページファイルの状態に関する特記事項はなし。
    ・ページファイルは一時的なものではない。

    と帰ってきました。
違反を報告
引用返信
■35621 / ResNo.5)  Re[5]: システムドライブ以外へのページング設定が反映されない
□投稿者/ ぺんたごん 一般人(10回)-(2024/06/13(Thu) 08:46:43)
  • アイコンありがとうございます。
    試してみましたが、set InitialSize…の行で
    「利用できるインスタンスがありません。」エラーになり、
    再起動後は C も D も「システム管理サイズ」になりました。
    そして「システム管理サイズ」になっても D には pagefile.sys が作成されないので
    どうあがいても D にページングできないようです…

    もう諦めて魔界の仮面弁士さんに頂いた
    シンボリックリンクで C を空ける手法を取るしかなさそうですね

違反を報告
引用返信

■記事リスト / レス記事表示 → [親記事-5]



■記事リスト / ▲上のスレッド
■35611 / 親記事)  ブラウザでコピーした透過PNGを貼り付けたい
□投稿者/ よっし〜 一般人(1回)-(2024/06/07(Fri) 12:18:00)
  • アイコン環境/言語:[VB.NET2013 Win7] 
    分類:[.NET] 

    お疲れ様です。
    現在ブラウザ上に表示されている画像をフォームのPictureBoxに表示するソフトを作成しております。
    ブラウザに表示されている画像で「画像をコピー」しクリップボード経由で「Dim Img As Image = My.Computer.Clipboard.GetImage()」
    すると背景が真っ黒になります。
    画像が透過PNGの為だと思っておりますが、この画像の背景を白にしてPictureBoxに表示する方法はありませんでしょうか?

    If My.Computer.Clipboard.ContainsImage() Then
    Dim Img As Image = My.Computer.Clipboard.GetImage()
    PictureBox1.Image = Img
    End If

    ちなみに透過PNGブラウザで一旦保存し、そのPNGファイルを加工する方法も行いましたが、クリップボードに送られた段階
    で背景が黒く塗られている様で、うまく行きません。

    Using pngImage As Image = Image.FromFile(pngFilePath)
    Using bmp As New Bitmap(pngImage.Width, pngImage.Height)
    Using g As Graphics = Graphics.FromImage(bmp)
    g.Clear(Color.White)
    g.DrawImage(pngImage, 0, 0, pngImage.Width, pngImage.Height)
    End Using
    bmp.Save(OutputFile, ImageFormat.Png)
    End Using
    End Using

    以上、宜しくお願いいたします。
違反を報告
引用返信

▽[全レス4件(ResNo.1-4 表示)]
■35612 / ResNo.1)  Re[1]: ブラウザでコピーした透過PNGを貼り付けたい
□投稿者/ 魔界の仮面弁士 大御所(1573回)-(2024/06/07(Fri) 14:13:32)
  • アイコンNo35611に返信(よっし〜さんの記事)
    >「Dim Img As Image = My.Computer.Clipboard.GetImage()」
    > すると背景が真っ黒になります。

    CF_BITMAP が取得されたためでしょう。
    取得フォーマットの問題ですね。


    たとえば、下記を Edge からコピーしてみた場合、
    クリップボードには 6 種類のデータが保持されました。
    https://ascii.jp/img/2021/04/11/3186022/l/33f2a9acb9788a6d.png

    CF_PNG ("PNG") ⇒ 透過のPNG画像(460x460)
    CF_DIBV5 (17) ⇒ 黒背景のデバイス非依存ビットマップ(460x460)
    CF_HTML ("HTML Format") ⇒ img タグ入りのHTML(終端nullあり、CRLF改行)
    ("Chromium internal source URL") ⇒ URL文字列(終端nullあり、改行なし)
    CF_BITMAP (2) ⇒ ビットマップハンドル (HBITMAP)
    CF_DIB (8) ⇒ 黒背景のデバイス非依存ビットマップ(460x460)

    ということで修正案。

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
      Dim c = Clipboard.GetDataObject()
      Dim img As Image = Nothing
      If c.GetDataPresent("PNG", False) Then
        Dim o = TryCast(c.GetData("PNG"), System.IO.MemoryStream)
        If o IsNot Nothing Then
          img = Image.FromStream(o)
        End If
      ElseIf c.GetDataPresent(GetType(Image)) Then
        img = DirectCast(c.GetData(GetType(Image)), Image)
      End If
      PictureBox1.Image = img
    End Sub
違反を報告
引用返信
■35613 / ResNo.2)  Re[2]: ブラウザでコピーした透過PNGを貼り付けたい
□投稿者/ よっし〜 一般人(3回)-(2024/06/07(Fri) 15:14:46)
  • アイコン魔界の仮面弁士さん、早速のご教示、有り難うございます。

    一応お教え頂いたソースを新しいプロジェクトにして作成し、
    https://ascii.jp/img/2021/04/11/3186022/l/33f2a9acb9788a6d.png
    をブラウザでコピーし、Buttonを押してみたのですが、
    PictureBox1.Image = img
    で「img」はNohingでした。(画像が取れていない様です)

    で、少し気になったのですが、ブラウザによって動作(内容)は変わるものでしょうか?
    例として同じ「33f2a9acb9788a6d.png」をブラウザ上でコピーしワードパッドに貼って見ました。
    FireFox:背景は白(透過)でペーストされました
    Crome:背景は黒でペーストされました

    お教え頂いたソースでは・・・
    Crome:画像が表示されました
    FireFox:PictureBox1.Image = imgのimgがnothingになりました。

    同じコピーでも形式が変わるって事なのでしょうか??

    以上、宜しくお願いいたします。


違反を報告
引用返信
■35614 / ResNo.3)  Re[3]: ブラウザでコピーした透過PNGを貼り付けたい
□投稿者/ 魔界の仮面弁士 大御所(1574回)-(2024/06/07(Fri) 16:11:01)
  • アイコンNo35613に返信(よっし〜さんの記事)
    > 同じコピーでも形式が変わるって事なのでしょうか??
    クリップボードにデータを送信する処理というのは、
    それぞれのアプリケーションの実装依存になっていますので、
    ブラウザーがによって異なる形式になることは十分にありえます。


    > 例として同じ「33f2a9acb9788a6d.png」をブラウザ上でコピーしワードパッドに貼って見ました。
    これも同様。
    クリップボードには、複数のデータ形式が同時に保持されることが多いですが
    その場合、どの形式を採用するかは、添付先のアプリケーション依存です。
    Excel でも、"形式を選択して貼り付け" というモードがありますよね?

    複数のフォーマットをサポートしているアプリの場合、
    (1) 列挙されたフォーマットのうち、最初の形式を採用
    (2) サポートしている形式に優先度をつけ、優先順位の高いフォーマットを優先
    などの違いが生じることがあります。

    たとえば先の私のサンプルは (2) の実装であり、
    "PNG" 優先、無ければ Image を採用…という処理になっているわけです。


    > https://ascii.jp/img/2021/04/11/3186022/l/33f2a9acb9788a6d.png
    > FireFox:PictureBox1.Image = imgのimgがnothingになりました。
    個人的には、Firefox は苦手なんですよね…。
    Child-Tree 系の掲示板に繋ぐと、全角投稿者名などの cookie が腐ることがあったりするので。
    サイト側の問題だといえばそれまでなんですが。


    それはさておき、相手が Firefox や Internet Explorer ならば
     Dim s = Clipboard.GetFileDropList()
     If s.Count > 0 Then
      PictureBox1.LoadAsync(s(0))
      Return
     End If
    で行けるんじゃないですかね?

    試しに FireFox を再インストールして確認してみたところ、
    Internet Explorer および Firefox の場合は、
    下記の 14 種類の形式がクリップボードに含まれていました。


    【Internet Explorer 11 (Win10 22H2) で画像をコピーした場合】
     #01 "DataObject"
     #02 CFSTR_UNTRUSTEDDRAGDROP (50519)
     #03 "msSourceUrl"
     #04 CF_HDROP (15)
     #05 CFSTR_INETURLW (49483)
     #06 CF_DIB ★黒背景画像
     #07 "HTML Format"
     #08 CF_UNICODETEXT (13)
     #09 CF_TEXT (1)
     #10 "Ole Private Data"
     #11 CF_LOCALE (16)
     #12 CF_OEMTEXT (7)
     #13 CF_BITMAP (2) ★黒背景画像
     #14 CF_DIBV5 (17) ★黒背景画像


    【Firefox (ver 126.0.1 64bit) で画像をコピーした場合】
     #01 "DataObject"
     #02 "text/html"
     #03 "HTML Format"
     #04 "text/_moz_htmlinfo"
     #05 "text/_moz_htmlcontext"
     #06 "application/x-moz-file-promise-url"
     #07 "application/x-moz-file-promise-dest-filename"
     #08 CF_HDROP (15)
     #09 CFSTR_PREFERREDDROPEFFECT (49472)
     #10 "application/x-moz-nativeimage" ※取得できない
     #11 CF_DIBV5 (17) ★黒背景画像
     #12 CF_DIB (8) ★黒背景画像
     #13 "Ole Private Data"
     #14 CF_BITMAP (2) ★黒背景画像


    ※"application/x-moz-nativeimage" の場合に HGLOBAL が NULL となるのはバグらしい?
    https://bugzilla.mozilla.org/show_bug.cgi?id=255686
違反を報告
引用返信
■35615 / ResNo.4)  Re[4]: ブラウザでコピーした透過PNGを貼り付けたい
□投稿者/ よっし〜 一般人(4回)-(2024/06/07(Fri) 17:36:16)
  • アイコン魔界の仮面弁士さん、早速のご教示有り難うございます。

    > それはさておき、相手が Firefox や Internet Explorer ならば
    >  Dim s = Clipboard.GetFileDropList()
    >  If s.Count > 0 Then
    >   PictureBox1.LoadAsync(s(0))
    >   Return
    >  End If
    > で行けるんじゃないですかね?

    本当ですね。普通に表示出来ました。
    ただFireFoxはいけましたが、CromeやEdgeも対象としたいので、先にご教示頂きました
     Dim c = Clipboard.GetDataObject()
      Dim img As Image = Nothing
      If c.GetDataPresent("PNG", False) Then
        Dim o = TryCast(c.GetData("PNG"), System.IO.MemoryStream)
        If o IsNot Nothing Then
          img = Image.FromStream(o)
        End If
      ElseIf c.GetDataPresent(GetType(Image)) Then
        img = DirectCast(c.GetData(GetType(Image)), Image)
      End If
      PictureBox1.Image = img
    との合わせ技で解決出来そうです。
    長い間悩んでおりました。どうも有り難うございました。


解決み!
違反を報告
引用返信

■記事リスト / レス記事表示 → [親記事-4]






Mode/  Pass/


- Child Tree -