ShellExecute.. properties
ファイルやフォルダの「プロパティ」ダイアログを表示したくなった.
以前調べた時,ShellExecute の lpOperation で指定すれば良いと思っていた.
Copilot に聞いてみると,次の様なコードが表示された.
{
LPCTSTR filePath = _T("E:/_backup_") ;
HINSTANCE hInstance = ::ShellExecute(NULL,_T("properties"),filePath,NULL,NULL,SW_SHOWNORMAL) ;
if (UINT64(hInstance) < 32) {
DWORD error = ::GetLastError() ;
tstring str = ::Error_FormatMessage(error) ;
std::tout << str << std::endl ;
}
}
{
SHELLEXECUTEINFO sei = {0};
sei.cbSize = sizeof(SHELLEXECUTEINFO) ;
sei.lpVerb = _T("properties") ;
sei.lpFile = _T("E:/_backup_") ;
sei.nShow = SW_SHOWNORMAL ;
sei.fMask = SEE_MASK_INVOKEIDLIST ;
if (!::ShellExecuteEx(&sei)) {
DWORD error = ::GetLastError() ;
tstring str = ::Error_FormatMessage(error) ;
std::tout << str << std::endl ;
}
}
::ShellExecuteEx は表示できるが,::ShellExecute はエラーになる.
改めてドキュメントを見ると ::ShellExecute には “properties” がない.
C++&Win API 設定(Windows設定アプリ)を表示する
ファイルプロパティの表示
ShellExecute()とデフォルトブラウザの起動、拡張子の関連付け
“!This folder protects … “
簡単にバックアップをとるためのツールを作成中.
目的としては「バックアップと復元 (Windows 7)」の様なもので,robocopy によるバックアップのみ.
「ディレクトリ以下のコピー」ツールの内部的な部分を,用途を絞って用意できればと思っている.
次のコードで動作を確認していると,見慣れないフォルダがあった.
bool test_backup (const int csidl)
{
tstring fdst = _T("e:") ;
tstring path = ::SH_GetFolderPath(csidl) ;
std::tout << ::u64to0t(csidl,16,8) << _T("\t") << path << std::endl ;
{
if (!x_CopyCommand::CheckFolderDST(fdst.c_str())) {
fdst = ::Path_AddLastSP(fdst) + x_Copy_RootDST ;
}
x_CopyCommand bc_cmd ;
{
bc_cmd.SetFolderDST(fdst.c_str()) ;
bc_cmd.SetFolderSRC(path.c_str()) ;
// bc_cmd.Set_pause(true) ;
bc_cmd.Execute(SW_MAXIMIZE,true) ;
}
}
return true ;
}
C:\Users\Iwao\Desktop\!This folder protects against Ransomware. Just leave it here
検索すると問題ないとのこと.
検索する前からわかってはいたが,見つかった情報の内容が正しくないものがあった.
そのフォルダにある desktop.ini を開くとアイコンの指定があり,Cybereason となっている.
robocopyの良く使うオプションを用途から逆引き【Windows】
Robocopyでよく使用するオプションについてまとめてみた
Windows 11/10 の標準機能で自動システムバックアップ
【Windows 10 の基本】必要なフォルダーのバックアップを取るには?
Windows 10&11標準アプリ「Windows バックアップ」とは?:簡単に使えるバックアップ ツール
[データバックアップ編]残しておきたい8大データをピンポイント保存
VC でビルドできなくなった?
先日 VS 2022 のアップデートがあったので更新.
アップデート後のいつもの確認で,ツールのデバッグ版をビルドすると,いつまで経っても完了しない.
時々アップデートに失敗することがあるので,それかと思い,VC 2015 でビルドしても同様.
ここまでは 6/21 に確認.
VC 2005 でのビルドも完了しない.VC 6 では OK .
VC 2022 でダイアログベースで作成したスケルトンのままでも同様.
VC 2022 で,VB や C# のフォームアプリケーションはちゃんとビルドできる.
検索してもそれらしい情報には引っかからない.そうなると環境の問題か?
通常の MFC を使用したツール類は,今月に入ってからはビルドしていない.
.NET を利用した Web サーバは,インストールしている VC 2005 から 2022 すべてで 6/3 にビルドしている.
その後,VC 6 でのビルドは行っているが,VC 2022 などではビルドしていない?
先週までの影響しそうな変更などは次のようなもの.
NAS 環境に Docker とそのコンテナなどをインストール.
Windows Update 2025/06 .VS 2022 などのアップデート.
WSL はインストール済みだった.Docker Desktop のインストール.
Linux でもコンパイルできる様に,一部の共通のコードの修正.
VS 2022 のアップデート.
Web サーバのプロジェクトを VC 2005 と 2008 で再度ビルドすると,問題ない.VC 2010 はダメ.
VC 2005 で作成したダイアログベースのプロジェクトは 30 分程度かかるがビルドできた.
これらのことを考えると,ネットワークの問題か,インクルードの関係と思われる.
今まで長い間,インクルードの関係が次の様になっている.
今は使用していないパスの設定を整理して削除.
先日までの速度でビルドできるようになった.
mount 先への書き込み
引き続き,環境をどうするか?
現状 Win32 の AP の開発は,次の様に分けている.
Server_TS : 共通のコード(_.SRC 以下)
Server_DS : プロジェクトのソースなど(AppWizard の生成物).
Server_AS : ビルド結果(*.obj,*.exe).
Win11 PC : 一時的なテスト用プロジェクトなど.
今まで,共通のコードは mount して,Linux 固有の部分はそれぞれの環境に置いていた.
Server_DS のテスト環境に,Win10 PC の仮想マシンにあった Linux 環境のファイルをコピー.
次の様に mount .
mount -t cifs //192.168.1.xx/Public/Temp/linux/gcc /home/wao/test/gcc …
コンパイルするとエラーになる.
g++ c84.cpp -lglut -lGL -lGLU
コンパイル時に sudo をつければ良い.
ソースの編集は,他環境からのことが多いので,これで良しとするか?
さらに調べていると,よくわからない状態に.
sudo g++ src.cpp とするとエラーになってしまう.
PC の D ドライブにソースを入れた場合や,Linux 環境にコピーした場合などは OK .
この1ページで一通りわかる!Linuxのマウント(mount)について
マウントしたディレクトリを一般ユーザー権限にする
LinuxでNTFSファイルシステムのマウントでアクセス権限やファイルの所有者変更で悩まないために
NAS への mount
VirtualBox の Fedora では,次の様なコマンドで Win10 環境の _.src を参照していた.
sudo mount -t cifs -o username=user,password=pass //Z170S0/Public/…/_.SRC /mnt/_.src
今回 Win11 に VHD を移して,この辺りをどうするか調査中…
NAS への mount は,IP で指定しなければうまくいかない?
sudo mount -t cifs -o username=user,password=pass //192.168.1.xx/Public/ /mnt/public
WSL で入れた Fedora の環境も同じようにできる.
同様に Docker で入れた dorowu/ubuntu-desktop-lxde-vnc もやってみたが,こちらはうまくいかない.
mount: /mnt/public: permission denied.
mount: /mnt/public: cannot mount //192.168.1.xx/Public/ read-only.
Unable to apply new capability set.
それならばと思い Nautilus を入れてやってみたが,よくわからない.
これらをやっていて久しぶりに思い出したのが「Ctrl」+「Z」や,nautilus & .
コマンドの後ろに & を付加すると bg で動作する.
他に fg や jobs .
40 年近く前,アセンブルやストックフォームに印刷などで他の人に迷惑をかけた記憶がよみがえってきた.
【SMB / CIFS】LinuxでNASドライブをマウントする
LinuxでのNASへの自動マウントの方法@2024
UbuntuでNASのマウントと注意点
【Linux】【Windows】【CIFS】Windows の共有フォルダを Linux でマウント(mount)する手順
WindowsとLinuxでCIFSを使って簡単にファイル共有する方法
Synology NAS で OpenMP
最近 Docker に関して調べていて,幾つか気になったことを整理.
以前,OpenMP に関して調べているが今の時点で整理すると,
Synology NAS DS220+ では実行可能,TS-253D と AS5202T では不可.
DS220+ でも,ビルドはできない.他の環境でビルドしたものをコピーして実行.
何れの環境でも omp.h が存在しないためビルドはできない.
DS220+ では libgomp.so が存在するので動作するみたい.
TS-253D では「libgomp.so がない」となってしまう.
当然のことではあるが,Docker など仮想環境を利用すれば可能になる.
Windows で Docker
Win11 環境での続き…
先日から NAS 環境でいろいろとやったので,ある程度すんなりできた.
dorowu/ubuntu-desktop-lxde-vnc を検索してインストール.
「dorowu/ubuntu-des…」を選択してインストール.
「RUN」して「Optional settings」を「↓」.
「Host port」に「60080」などと入力し「Run」.
「60080:80」のリンクをクリックするとブラウザが開く.
gcc などをインストール.
GLUT を使用したコードをビルドして動作することを確認.
Windows 10 homeでWSL2 + DockerDesktopでDocker環境を構築する手順
Comprehensive Guide to dorowu/ubuntudesktoplxdevnc:latest
Windows 11 + Docker + Linux開発の落とし穴
AIロボット入門2024:LXDEデスクトップ環境の使い方
【Docker】公式イメージでUbuntuデスクトップ構築手順
Windows で Docker ?
Ubuntu と同様に wsl ––install fedora で Fedora をインストールできた(この環境では既に入っている ).
Microsoft Windows [Version 10.0.26100.4349]
(c) Microsoft Corporation. All rights reserved.
C:\Users\Iwao\AppData\Local\Temp>wsl --install fedora
ダウンロードしています: Fedora Linux 42
インストールしています: Fedora Linux 42
指定された名前のディストリビューションは既に存在します。--name を使用して別の名前を選択してください。
エラー コード: Wsl/InstallDistro/Service/RegisterDistro/ERROR_ALREADY_EXISTS
C:\Users\Iwao\AppData\Local\Temp>
gcc や glut などもインストール.
2014/09 の GLUT のコードを,2019/09 に a.out にしたものがあった.
Fedora から参照できるようにして,起動するとうまく動いた.
ここまで特に何も考えないでやっていたが,Fedora 42 は最近になって WSL から簡単に利用できるようになったみたい.
Fedora in Windows Subsystem for Linux
WSL に標準で対応した Fedora 42 がリリースされたので試してみる(WSL 2 編)
2025/06/13
同様に Ubuntu で GLUT 関係をやったが,freeglut3 がインストールできない.freeglut3-dev は可能.
wao@B660M:~$ sudo apt install freeglut3
[sudo] password for wao:
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
E: Unable to locate package freeglut3
wao@B660M:~$ sudo apt install freeglut3-dev
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
libegl-dev libgl-dev libgl1-mesa-dev libgles-dev libgles1 libglu1-mesa libglu1-mesa-dev libglut-dev libglut3.12
libglvnd-core-dev libglvnd-dev libglx-dev libice-dev libopengl-dev libopengl0 libpthread-stubs0-dev libsm-dev libx11-dev
libxau-dev libxcb1-dev libxdmcp-dev libxext-dev libxt-dev x11proto-dev xorg-sgml-doctools xtrans-dev
Suggested packages:
libice-doc libsm-doc libx11-doc libxcb-doc libxext-doc libxt-doc
The following NEW packages will be installed:
freeglut3-dev libegl-dev libgl-dev libgl1-mesa-dev libgles-dev libgles1 libglu1-mesa libglu1-mesa-dev libglut-dev
libglut3.12 libglvnd-core-dev libglvnd-dev libglx-dev libice-dev libopengl-dev libopengl0 libpthread-stubs0-dev libsm-dev
libx11-dev libxau-dev libxcb1-dev libxdmcp-dev libxext-dev libxt-dev x11proto-dev xorg-sgml-doctools xtrans-dev
0 upgraded, 27 newly installed, 0 to remove and 3 not upgraded.
Need to get 2970 kB of archives.
After this operation, 12.7 MB of additional disk space will be used.
Do you want to continue? [Y/n]
2019/09 の a.out は libglut.so.3 がないため実行できなかった.
GLUT を使用したコードは,Ubuntu 環境でビルドし直すことで起動できるようになった.
【初心者向け】WindowsにDockerをインストールする方法|Docker Desktop編
WSL(Windows Subsystem for Linux)向けにFedoraディストリビューション登場
How to install Fedora on WSL for Windows 10 and Windows 11
MicrosoftがWSLにFedora Linuxを追加、tarベース新アーキテクチャの採用でディストリビューション拡充へ
WSLg を使って Docker 上で GUI アプリを動かす(GPUサポート付き)
Synology NAS で Docker
QNAP NAS に入れた dorowu/ubuntu-desktop-lxde-vnc を Synology NAS に…
なかなか入り方がわからなかった.
「コンテナ」-「dorowu-ubuntu-desktop-lxde-vnc-1」-「全般」-「ポート」の値で開ける.
つまり,ブラウザで「http://192.168.1.22:32768」の様に入力すれば良い.
この画像は,デスクトップで起動した Firefox から Synology NAS の DSM を開いている.
Run Ubuntu Linux in Docker with Desktop Environment and VNC
ROS/ROS2のGUIをWebブラウザ経由でお手軽に試せるDockerfileを公開しました
dockerで手軽にLinuxデスクトップ環境を試せる!
【Docker】Ubuntuデスクトップ(dorowu/ubuntu-desktop-lxde-vnc)構築と接続手順
QNAP NAS で Docker
引き続き Docker の関係をいろいろと…
コンテナの「端末」を使用した操作はある程度わかったが,今度は GUI での操作.
Synology NAS でいろいろとやったが,よくわからず.そのため QNAP NAS で.
「Container Station」-「アプリテンプレート」で「Ubuntu Desktop with noVNC」を「デプロイ」.
「Container Station」-「コンテナ」で「ubuntu-desktop-lxde-vnc-1」の ↗ で起動できる.
これと同じようなことを Synology NAS で行ったが,デスクトップを開く方法までたどり着けなかった.
QNAP NASでDocker(Container Stationを使用)
QNAP NASでRedmineを動かす
QNAP NASのContainerSation(Docker)であとから環境変数を追加する
QNAPでDockerレジストリサーバの作成
TWSNMP FC を QNAP NAS の Docker で 動作させる
やっぱりDockerって便利 QNAP TS-453Aで数クリックで「Aipo」を動かす
QNAP の Docker を使ってみる
NAS で Docker …
以前から存在は知っていたが,あまり必要性を感じてはいなかった.
先日,ASUSTOR NAS の ADM の更新があり,Joomla! 3 などのサポートがなくなった.
それで,ちょっと調べてみることに…
保有している幾つかの NAS で Docker は使えるみたい.
が,検索して見つかるページはなかなか難しい.
いろいろと弄っていると…
Synology DSM デモサイトで「Container Manager」が動作する.
「Container Manager」を起動.
「レジストリ」を選択して「gcc」を検索,表示された「gcc」を「ダウンロード」.
「イメージ」で「gcc」を選択して「実行」.
「コンテナ」で「gcc-1」を選択して「端末を開く」.
Hello World を作成して g++ .
今度は「Ubuntu」を使用.「ダウンロード」して「実行」,「端末を開く」.
gcc などが入っていないので,次のコマンドを入力してインストール.
apt update
apt upgrade
apt install build-essential
apt install nano
コンパイルして,実行.
How to Use Docker & Container Manager on a Synology NAS
Synology NASのDockerパッケージでDocker Composeを使用する方法
Synology NAS でPortainerによるDockerコンテナ管理
NAS×Dockerでお手軽にLinux環境を作った話
QNAP の Container Station で Docker Compose を使ってみる
ASUSTOR NAS で Docker を使用する
Synology NAS で .NET console
先日から Synlogy NAS 上の .NET に関していろいろとやっている.
今まで Windows 上でコードを書いて run ,NAS 上にコピーして SSH 接続して実行していた.
これをもう少し簡単にできないかと…
NAS 上のコピー先をネットワークドライブとして割り当て.
そこをコマンドプロンプトで開いて,dotnet コマンドなどでいろいろと…
Dotnet Run App
コマンドラインでC#プログラミング
.NET Core で 実行ファイル(exe)を作成する方法
ショートカットからの起動で …
VS 2022 でインストーラを作成.
インストールした exe を起動する時はうまく動作する.
exe へのショートカットをダブルクリックして起動すると,インストーラが走ってしまう.
原因は「Application Folder」の「DefaultLocation」が正しくなかったため.
実行時に,指定したフォルダが存在しない場合も同様.
「DefaultLocation」を指定して,「AlwaysCreate」を「True」に.
Set_SasZ.zip
【.NET Core対応】Visual Studio 2019でインストーラを作成する方法
インストーラクラスでインストーラを作成する
Visual Studio Installer Projectsでインストーラを作成する
VisualStudio 2019 インストーラの作成方法
Visual Studioでインストーラを作成する
Web サーバ C++/CLI
以前 VC 2005 で作成した「簡易 Web サーバ」を VC 2022 に.
vc 2005 ~ 2022 でビルドできる一式を zip にしています.
https://itl.mish.work/i_Tools/Doc/blog/vc/W_svr.zip
https://jml.mish.work/index.php/i-tools/web-svr.html