ホーム » Windows (ページ 12)
「Windows」カテゴリーアーカイブ
MAPI の MapiFileDesc の配列
MFC を使用している方法では,
LateDelete ld ; // MultiByte の必要があるようなので,UNICODE の時のバッファをここに登録 // 添付ファイルの準備 CArray<MapiFileDesc,MapiFileDesc> fileDescA ; int fileCount = 0 ; int index = 0 ; for (index=0 ; index<PathNames.GetSize() ; index++) { CString pathName = PathNames[index] ; if (::FileIsNothing (pathName)) { continue ; } if (::FileIsDirectory(pathName)) { continue ; } MapiFileDesc fileDesc ; memset(&fileDesc,0,sizeof(MapiFileDesc)) ; fileDesc.nPosition = (ULONG)-1 ; #ifdef _UNICODE fileDesc.lpszPathName = SendMail__ChangeMultiByte(PathNames[index],&ld) ; fileDesc.lpszFileName = SendMail__ChangeMultiByte(FileNames[index],&ld) ; #else fileDesc.lpszPathName = LPSTR(LPCTSTR(PathNames[index])) ; fileDesc.lpszFileName = LPSTR(LPCTSTR(FileNames[index])) ; #endif fileDescA.Add(fileDesc) ; fileCount++ ; }
MFC を使用しないコードは,
std::vector<MapiFileDesc> fileDescA ; std::vector<std::string> pathNameA ; std::vector<std::string> fileNameA ; int index = 0 ; { for (index=0 ; index<PathNames.GetSize() ; index++) { { tstring pathName = PathNames[index] ; if (::File_IsNothing (pathName)) { continue ; } if (::File_IsDirectory(pathName)) { continue ; } } std::string pathName= ::To__string(PathNames[index]) ; std::string fileName= ::To__string(FileNames[index]) ; pathNameA.push_back(pathName) ; fileNameA.push_back(fileName) ; } { for (size_t index=0 ; index<pathNameA.size()&&index<fileNameA.size() ; index++) { MapiFileDesc fileDesc ; memset(&fileDesc,0,sizeof(MapiFileDesc)) ; fileDesc.nPosition = (ULONG)-1 ; fileDesc.lpszPathName = &(pathNameA[index])[0] ; fileDesc.lpszFileName = &(fileNameA[index])[0] ; fileDescA.push_back(fileDesc) ; } } }
詳しくは見てないが,幾つかの方法が書かれていたので
Sending Email with MAPI
MapiRecipDesc.lpszAddress の “smtp:”
以前コードを直したのが 2002/4 であまり情報がなかった様に思う.
個人的に書いた内容が「Outlook で配信不能になる」
参考になりそうな所
Email mit Dateien perWinAPI versenden??
MAPISendMail
MSDN MapiRecipDesc structure
Sending email using MAPI causes error on ‘ResolveName’ function in Window7
MAPI を使用した複数ファイルの送信
S_Mail.hxx
Win10 1709 その後
内臓のディスク容量が少ないので,「ジャンクション」を利用して D にしていた.
C:\Users\Public\Documents>dir /a ドライブ C のボリューム ラベルは OS です ボリューム シリアル番号は 9899-964A です C:\Users\Public\Documents のディレクトリ 2018/01/21 13:56 <DIR> . 2018/01/21 13:56 <DIR> .. 2016/02/11 01:29 <JUNCTION> Asus [C:\Public\Document\Asus] 2017/09/29 20:52 278 desktop.ini 2016/02/11 01:49 <JUNCTION> Dropbox [C:\Public\Document\Dropbox] 2016/12/22 11:01 <DIR> images 2016/02/11 01:27 <JUNCTION> M... [C:\Public\Document\M...] 2016/02/11 01:16 <JUNCTION> M... [C:\Public\Document\M...] 2015/07/10 18:55 <JUNCTION> My Music [C:\Users\Public\Music] 2015/07/10 18:55 <JUNCTION> My Pictures [C:\Users\Public\Pictures] 2015/07/10 18:55 <JUNCTION> My Videos [C:\Users\Public\Videos] 2018/01/21 14:20 <DIR> Temp 2016/02/11 01:26 <JUNCTION> Tools [C:\Public\Document\Tools] 2016/02/20 16:28 0 VC_Path.BAK 2016/02/20 16:31 2,563 VC_Path.txt 2016/12/21 23:45 168 web.config 2017/02/17 22:12 <DIR> w_Conf 4 個のファイル 3,009 バイト 13 個のディレクトリ 3,028,328,448 バイトの空き領域
* 一部ディレクトリ名などは編集済み.
JUNCTION という情報は残っているようではあるが,D ドライブを正しく指していない.
確か,1607 でも一部(%Temp% 直下のジャンクション)がうまく引き継がれなかった.
ここが引き継げないのはわからなくもないが,Public\Documents 以下は何とかできないものか?
WSR-300HP 追加
先日,WLI-UC-AG300N を追加し「ワイヤレス ルーター」として設定したが,
ちょっと不安定なのと,そこからは外を覗かない様にしたかったのであまり使えないでいた.
どちらかと言うと,独立した AP として利用していた感じ.
「ホテルルーター」が良いかとも思ったが,発熱の問題や,長時間だと不安定になることがあるなどとあった.
いろいろ考え,やはり独立した「ルーター」が良さそうと思い量販店へ.
「安価なルーター」で「Wi-Fi や GIGA ビットはあればなお良い」と言うことで探してもらった.
それですすめてもらったのが WSR-300HP .価格的にも予定範囲内.
接続などは特に困ることもなく LAN 内は独立して意図した動作となった.
が,T5400 で「インターネット」接続が不安定なことは残っていた(前回あまり調べてなかった).
どうも「デフォルトゲートウェイ」の設定がよくなかったみたいで,追加した側の IP を固定に.
2017/07/11
固定 IP にすることだと,本来 DHCP サーバを使いたかったのでこのルーターを追加する意味が半減する.
さらに調べてみると,
Windows 7 でネットワーク接続の優先順位を変更する方法
B65/R 追加
dynabook B65/R 追加.
はじめに.pdf にある通り,次の作業.
リカバリーメディアの作成.
PC 引越ナビ.
Win 10 のメディアは付属していたが,Win 7 が入っている状態.
セットアップで 32 / 64 ビットの選択があり,
メモリが 4 G なので 32 を選択.
DVD-ROM ドライブのため,BRD-UT16WX を接続して作成.
DVR-R 4.7G メディアは 4 枚で,作成時間は 1 時間程度.
よく知らなかったが,
DVD-ROM ドライブでも DVD-R のメディアは読めるみたい.
旧 PC は TXE/68HE で,USB メモリと LAN ケーブルを使う方法で.
USB メモリは空きが 50 MB 程度のものを利用.
LAN は旧 PC の制限で 100 M bps みたい.
転送されたデータは 100 G 程度で,6 時間位かかった.
その後 Web に接続して,MSSE をインストール.
高 DPI
高 DPI についての情報
MSDN 高 DPI アプリケーションの記述方法
MSDN ユーザー インターフェイス: 高 DPI 対応
blogs.msdn アプリの高 DPI 対応について
PDC 2008 高 DPI 対応の Win32 アプリケーションを記述する
MSDN magazine Windows 8.1 用の高 DPI アプリケーションを作成する
Win 10 10586 3D Builder
3MF 形式ではいたデータが,10586 にしてから開けないでいた.エラー : 0x80004005
model タグに,xmlns 属性が必要になった?
<model unit= "millimeter " xmlns="http://schemas.microsoft.com/3dmanufacturing/core/2015/02 " >
ply だと,
3MF でのテクスチャは未だ.
2016/05/02 テクスチャなどの大文字,小文字も区別される?また,path も / から正しく指定する必要がある.
テクスチャの場合,colorid の指定が object の属性では効果がなくなった?
triangle 内での指定が必要?
Win 10 10586
ドロップダウン付のツールバーで,ボタンが切れる現象は直った?
VS 2005 で作成した「Web セットアップ プロジェクト」のインストールはまだできない?
2015/12/10
ドロップダウン付のツールバーのサイズが正しくない現象が XP でも発生.
初期の Win 10 で現象が発生しやすかったことは確かだが,もっと他にも条件がありそう.
MFC 8 やフラットかどうかなど.
XP で発生した時,MFC 6 の exe は問題なかった.
いつも使用している環境では,フラットにしていないことが多い.
Shell Extension のデバッグ
Shell Extension で,縮小版の背景に GDI+ を使用して,どうも動作が安定しなくなった.
現象としては,環境によるが explorer.exe が「応答なし」に.
GDI+ の GdiplusShutdown の呼び方が悪かったみたいで,DllCanUnloadNow で終わらせる様にした.
また,今回デバッグ用にダンプする様にしていて,そのファイルをエクスプローラで選択しようとするとフリーズ.
これは,デフォルトでは出力しないことで回避.
今回これらをやっていて,以前から面倒と思っていた ShellExt.dll のデバッグ.
デバッグ版.dll が呼ばれる様に設定して,普通の exe で「開く」ダイアログで dll 内をデバッグできる.
フォルダ以下の同期
先日追加した WD Cloud にソースなどをバックアップしたいと思い探していたら,robocopy.exe を見つけた.
まだ,単純にバックアップをとっているだけ.
robocopy \\DevXP\C_Drive\Temp\ \\WDCloud\Backup\Develop\DevXP\Temp\ /mir
UNICODE のフォルダやファイル名も,コピー中の表示は ‘?’ となるが問題なさそう.
GUI 版の RichCopy があるみたいだが,こっちはまだ未確認.
FTP もいける?
うまく起動しない…
「知人から譲り受けた Win 7 のノート PC の起動が遅い」と言うことで調べてみると,
確かに,起動時のロゴが出て HDD のランプが点きっぱなし,1 時間程そのままにしておいたら起動していた.
怪しいのは HDD .
イベントビューアで確認しようとしたが,起動はするがデータが開けない.
ChkDsk で修復すると,
起動は通常の時間になったと思うが,動作が安定しない.
リカバリメディアの作成
PCG-71712N で実際必要だったメディア数は DVD で 5 枚,DL で 2 枚となっていた.
VPCCB38FJ が正しいモデル名?
ずっと PC についてはいなかったが,それぞれ 20 ~ 30 分程度.
4 枚目が少しかかっていたように思う.HDD の不良セクタの影響?
先ず,リカバリ領域からのリカバリ.2 時間程度.
ちょっと拝借,AP をインストールして今日ビルドした exe をテスト.
今度はリカバリメディアの DVD から
読込?に 1 時間程度(ディスク 5 枚).
さらに 2 時間弱.
Window Update で,170 個程を 6 時間位.
VC 10 でビルドした exe を XP で…
以前から VC10 以降でビルドした exe が Win XP 環境で起動できてなかった(ビルド環境の Win 7 では OK).
—————————
M—.exe – エントリ ポイントが見つかりません
—————————
プロシージャ エントリ ポイント K32GetProcessMemoryInfo がダイナミック リンク ライブラリ KERNEL32.dll から見つかりませんでした。
—————————
OK
—————————
日本語化された GetProcessMemoryInfo には書かれてないが,
こちら (GetProcessMemoryInfo function) には,Win 7 以降変わっているような記述がある.
対応としては App.h(アプリケーションクラスのヘッダファイル)に以下を追加した.
#ifndef PSAPI_VERSION
#define PSAPI_VERSION 1
#pragma comment (lib, “PSAPI.Lib”)
#else
#pragma message (“defined PSAPI_VERSION *************”)
#endif
ファイル数
あるフォルダに,ユーザが作成した 3D データを,自動でファイル名を振って保存する様にしている.
但しファイル名の一部はユーザ指定.
ロジック上は,36^4 で 1,679,616 管理できるはず.
これがいっぱいになったと言われて…
通常の運用であれば,1 日に 100 個はかなりきつい.
それでも 16,000 日かかる.
そんなことがあり,ファイル名の空きを検出するツールを作成中.
かなり前の事だが,iRMX の FD のフォーマット?で,指定しないと 200 個位がデフォルトだったと記憶している.
NTFS ではその様なことはないと思ってたが,はっきりした情報があったのでメモ.
TechNet – ファイル システム
クリップボードに…
オフスクリーンにレンダリングしたものをクリップボードにコピーしていて,
5000x5000x4 バイトの CF_BITMAP がうまく動作しない.
原因は Office クリップボードの制限みたいで 8 M まで.
Office クリップボードにアイテムを追加できない場合の確認事項
無効にして対応.
よくわからないが,以下の様にした.
CF_METAFILEPICT StretchDIBits
CF_BITMAP AlphaBlend
AlphaBlend function (Windows) – TechNet – Microsoft に,
An error occurs (…) if the source device context identifies an enhanced metafile device context.
コピー画像は,
いろいろやっていて,一度 EMF に吐いて
::GetEnhMetaFile(…) で返される HENHMETAFILE を CF_ENHMETAFILE で意図した動作となった.
{
CString tmpPath = ::GetTempPath() ;
tmpPath = CString(::Path_AddLastSP(tmpPath).c_str()) + _T(“Debug.tmp”) ;
tmpPath = CString(::Path_AddLastSP(tmpPath).c_str()) + ::GetFileTitle(::GetModuleFileName()) ;
CString nowStr = CTime::GetCurrentTime().Format(_T(“%d%H%M%S”)) ;
CString tmpName = CString(::Path_AddLastSP(tmpPath).c_str()) + nowStr + _T(“.emf”) ;
::CreateFolder(tmpPath) ;
::ToEMF(dib,tmpName) ;
HENHMETAFILE hMetaFile = ::GetEnhMetaFile(tmpName) ;
return hMetaFile ;
}
…
::SetClipboardData(CF_ENHMETAFILE, hGMemEnhM) ;
i_DIB_x.hxx
i_DIB_Fn.hxx
i_dib.hxx
今度はメモリメタファイル(第 2 引数を NULL)にして,
{
CMetaFileDC mf_DC ;
BOOL ret = mf_DC.CreateEnhanced(NULL,NULL,NULL,NULL) ;
::AlphaBlend (mf_DC.GetSafeHdc(),dRect,dib) ;
HENHMETAFILE hEnhMetaF = mf_DC.CloseEnhanced() ;
return hEnhMetaF ;
}
CreateEnhanced の幾つかの引数が NULL は知らなかった.
CreateEnhMetaFile
Programming Windows 5 18.2.2
Programming Windows 5
XP 環境のクリップブックや,Word 2003 などでの CF_METAFILEPICT がうまくない.
{
CMetaFileDC mf_DC ;
BOOL ret = mf_DC.Create() ;
::StretchDIBits (mf_DC.GetSafeHdc(),dRect,dib) ;
HMETAFILE hMetaFile = mf_DC.Close() ;
hGMemMeta = ::GlobalAlloc( GHND, (DWORD) sizeof(METAFILEPICT)) ;
{
LPMETAFILEPICT lpMFP = (LPMETAFILEPICT)GlobalLock(hGMemMeta) ;
lpMFP->mm = MM_TEXT ;
lpMFP->xExt = dRect.right ;
lpMFP->yExt = dRect.bottom ;
lpMFP->hMF = hMetaFile ;
}
::GlobalUnlock(hGMemMeta) ;
return hGMemMeta ;
}
StretchDIBits とした.
Win 10 TP
Win 10 TP JP 9926 を入れてみた.
詳しく調べてないが,幾つか気になったことを.
VerifyVersionInfo で取る様に直したと思うが,6.2 として認識している?
ウィンドウのフレームの幅が広い?
ドロップダウン付きのツールバー?で,後ろのボタンが切れてしまうことがある.
Web に上げた exe だと?