ホーム » 検索結果: Shell (ページ 3)
検索結果: Shell
MinGW インストール
Android の開発環境を用意しようとしていて,
Pleiades – Eclipse プラグイン日本語化プラグイン をインストールまでは行っていた.
pleiades-e4.2-ultimate-32bit-jre_20130303.zip
以前インストールした(展開)時は,ファイル名の長さの制限で引っかかって,インストールまでで中断していた.
が,よくわからない.
その中に MinGW があったので,そこから,…
~\MinGW\bin に gcc.exe などがあったので,
テスト用の Hello.c を作成して,コンパイルすると a.exe はできた.
c:\~\My Documents\Temp\Test> type T_Hello.c
#include <stdio.h>
int main (void) {
printf(“hello\n”) ;
return 0 ;
}
c:\~\My Documents\Temp\Test> C:\pleiades\eclipse\mingw\bin\gcc.exe T_Hello.c
c:\~\My Documents\Temp\Test> dir
ドライブ C のボリューム ラベルがありません。
ボリューム シリアル番号は 7C5D-D1D9 です
c:\~\My Documents\Temp\Test のディレクトリ
2013/06/20 14:19 .
2013/06/20 14:19 ..
2013/06/20 14:19 49,177 a.exe
2013/06/20 14:07 78 T_Hello.c
2 個のファイル 49,255 バイト
2 個のディレクトリ 114,850,582,528 バイトの空き領域
c:\~\My Documents\Temp\Test> a
hello
これでは使い勝手が悪いので調べると,MSYS が使えそう.
けど MinGW フォルダには見当たらない.
MinGw Getting Started のリンク mingw-get-inst より,もう一度インストール.
MinGW Shell で開いてくるのは,C:\MinGW\msys\1.0\home\Iwao
C:\>tree \MinGW\msys\1.0\home
フォルダ パスの一覧
ボリューム シリアル番号は 7C5D-D1D9 です
C:\MINGW\MSYS\1.0\HOME
└─Iwao
└─Temp
└─Test
MSYS コンソール内で,
ネットワーク上のファイルは,//DevXP/C_Drive/…/c_src/
ls c:
ls \\
ls \\\\DevXP\\C_Drive
\\ と / は,等価?
more ではなく less
C++ のコード(std::cout<<“Hello CPP” << std::endl ;)をコンパイルすると,
$ gcc testcpp.cpp
C:\~\Temp\ccYlk1I9.o:testcpp.cpp:(.text+0x19): undefined reference to `std::cout’
C:\~\Temp\ccYlk1I9.o:testcpp.cpp:(.text+0x1e): undefined reference to `std::basic_ostream …
…
C:\~\Temp\ccYlk1I9.o:testcpp.cpp:(.text+0x6a): undefined reference to `std::ios_base::Init::Init()’
collect2: ld はステータス 1 で終了しました
gcc ではなく,g++ を利用するみたい.
また,出来上がった C++ の exe は,MSYS コンソールの外では,
—————————
TestCPP.exe – コンポーネントが見つかりません
—————————
libgcc_s_dw2-1.dll が見つからなかったため、このアプリケーションを開始できませんでした。
アプリケーションをインストールし直すとこの問題は解決される場合があります。
—————————
OK
—————————
2013/06/25
Eclipse を起動して,
「ファイル」-「新規」-「C++ プロジェクト」,「Hello World …」-「MinGW GCC」.
ビルド,実行で,
ZipFold と WinXP での zip
zae などの様に,zip 内のファイル名に 5c などの文字を含まない様にしている場合は OK .
つまり,zip のファイル名として 5c が含まれていても問題ない?
→ ZipFold が MBCS のためか? 単なるバグか?
→ CharFile.hxx GetFileAttribute の “\” 削除部分のバグ.
上は GetFileAttribute のバグが原因.
Shell を使用した zip クラスの動作では,5c が含まれていてもそれなりに動作する.
UNICODE 文字はうまくなさそう.
あるフォルダ以下の圧縮で,フォルダ名が 5c 文字で終わっている場合,
MFC 6 MBCS では,CFileFind::GetFilePath の影響を受ける.
::FolderF_EnumFiles 以下の部分で,新しく定義した iFileFind を使用する様に変更.
DImage の利用
Shell Extension を利用した画像表示.ダイアログにファイルをドロップすると表示する様に.
1. CStatic を用意.ピクチャコントロールを配置して ClassWizard で変数を追加.
2. DImageS の領域を確保.通常はヘッダに.
3. OnDropFiles で
// CString dropFile = …. ;
ImageS.SetFileName(dropFile) ;
ImageS.Draw(&m_Image) ;
{
m_Image.ShowWindow(SW_HIDE) ;
m_Image.ShowWindow(SW_SHOW) ;
}
// …
4. OnPaint で
ImageS.Draw(&m_Image) ;
DImage では,ImageDMF が追加される.
DImage.zip
iShelExt.dll ダウン
explorer.exe の 0x000000018001907b (iShelExt.dll) でハンドルされていない例外が発生しました:
0xC0000005: 場所 0x00000000000000b0 を読み込み中にアクセス違反が発生しました。
コードを見たが,原因が特定できなかったのでハードコピー.
同様に MShellE.dll でも
explorer.exe の 0x0000000180061830 (MShellE.dll) でハンドルされていない例外が発生しました:
0xC0000005: 場所 0xffffffffffffffff を読み込み中にアクセス違反が発生しました。
これもよくわからない.
2012/08/10 追記
explorer.exe の 0x000000018003938e (MShellE.dll) でハンドルされていない例外が発生しました:
0xC0000005: 場所 0xffffffffffffffff を読み込み中にアクセス違反が発生しました。
2012/08/30 追記
explorer.exe の 0x0000000180018e30 (iShelExt.dll) でハンドルされていない例外が発生しました:
0xC0000005: 場所 0x00000000000000c0 を読み込み中にアクセス違反が発生しました。
2012/09/25 追記
Cache のインデックスが 2 ,Cache はクリアされている.
2012/09/27 追記
2 つのスレッドから Profile::GetInt 内を指した状態で止まっている.
2012/10/08 追記
IL_Env_GetStr など,static で確保しているのが原因か?
2012/10/11 追記
やはり,static Env ?
2012/11/12 追記
DocIB::GetBitmap に以下を追加して排他管理する様に変更してみた.
_MutexS_ mt(FALSE,_T(“DocIB::GetBitmap”)) ;
MutexS m(&mt) ;
また,Mutex の動作が機能する様にするためには,アプリケーションクラスのヘッダで以下が必要.
#include AfxMT.h
CCheckListBox の使い方
explorer /e,/select
Explorer.exe コマンドライン オプション
void CDropADlg::OnExecExplorer()
{
UpdateData(TRUE) ;
CString file = m_SelectFile ;
ShellExec se ;
if (::FileIsDirectory(file)) {
se.SetFile(file) ;
}
else {
se.SetNon2QMark(TRUE) ;
se.SetFile(_T(“explorer.exe”)) ;
se.SetParamaters(_T(“/e,/select,”)+file) ;
}
se.Execute() ;
}
RegRead でのエラー
—————————
Windows Script Host
—————————
スクリプト: D:\Temp\MJobSel\Release.060\Script\20111114.wsf
行: 92
文字: 3
エラー: レジストリ キー “HKCU\Software\U–U–\M—\M—\FilePat_\User_Data” のルートが無効です。
コード: 80070002
ソース: WshShell.RegRead
—————————
OK
—————————
—————————
Windows Script Host
—————————
スクリプト: D:\Temp\MJobSel\Release.060\Script\20111114.wsf
行: 92
文字: 3
エラー: レジストリ キー “HKCU\Software\U–U–\M—\M—\FilePath\User_Dat_” を開いて読み取ることができません。
コード: 80070002
ソース: WshShell.RegRead
—————————
OK
—————————
どちらの場合も,キーの指定の間違い.
レジストリエディタでキーが開けなくなった場合の対応は,
レジストリ キーのオープンエラー
削除中にエラーが発生しました
登録エントリ (.reg) ファイルの構文
kb 310516 登録エントリ (.reg) ファイルを使用してレジストリ サブキーおよび値を追加、変更、または削除する方法
kb 256986 上級ユーザー向けの Windows レジストリ情報
reg export key file
Win 7 で file が存在する時,”y/n” の確認が入る.XP ではない.
ShellExec クラス経由で呼び出していたので,file は更新されず原因がわかり難かったのでメモ.
{
CString command = _T(“Reg.exe”) ;
CString param ;
{
CString dateTime= CTime::GetCurrentTime().Format(_T(“%y%m%d%H%M%S”)) ;
CString tmpFile = ::FolderAddLastSP(::GetTempPath()) + _T(“M___.tmp\\Reg\\”) + dateTime + _T(“.reg”) ;
::CreateEmptyFile(tmpFile) ;
CFile::Remove(tmpFile) ;
param = _T(“export hkcu\\”) + subKey + _T(” “) + tmpFile ;
}
{
ShellExec se ;
se.SetFile(command) ;
se.SetNon2QMark(TRUE) ;
se.SetParamaters(param) ;
se.SetShowCmd(SW_HIDE) ;
se.Execute() ;
}
}
//*******************************************************************************
// 関数名 :文字列に変換
// 作成日 :’10/03/05
//*******************************************************************************
CString RegAccessF::ToString (HKEY hKey,LPCTSTR subKey,LPCTSTR entry)
{
HSecKey = GetSecKey(hKey,subKey,KEY_QUERY_VALUE) ;
if (HSecKey == NULL) { return _T(“”) ; }
Entry = entry ;
Type = REG_NONE ;
Count = 0 ;
wchar_t wcEntry[1024] ;
::ToStringWC(wcEntry,countof(wcEntry),Entry) ;
LONG checkStatus = ::RegQueryValueExW(HSecKey,wcEntry,0,&Type,NULL,&Count) ;
if (checkStatus != ERROR_SUCCESS) { return _T(“”) ; }
CByteArray dataAry ; dataAry.SetSize(Count+10) ;
BYTE* dataPtr = dataAry.GetData() ;
LONG get__Status = ::RegQueryValueExW(HSecKey,wcEntry,0,&Type,dataPtr,&Count) ;
if (checkStatus != ERROR_SUCCESS) { return _T(“”) ; }
CString str ;
str.Format(_T(“\”%s\”=hex(%x):”),entry,Type) ;
for (int index=0 ; index BYTE b1 = dataAry[index] ;
CString bStr ; bStr.Format(_T(“%02x,”),b1) ;
str += bStr ;
}
CloseSecKey() ;
return str ;
}
VC 10 Dialog を VC 6 に
VC 10 で作成したダイアログベースのプロジェクトを VC 6 に
- プロジェクト作成時の基本クラス CDialogEx → CDialog
- 「構成プロパティ」-「全般」の「出力ディレクトリ」と「中間ディレクトリ」を $(Configuration).100\ に
- RC ファイルなどが UNICODE だったため,Shift-JIS に
- RC ファイル内でエラーになる部分をコメントに
- ico ファイル内に2573x1293x16777216 (256x256x32 png) があり,ビルドエラーになったので削除
C:\…\Project.rc (67): error RC2176 : old DIB in res\Project.ico; pass it through SDKPAINT - StdAfx.h 内の AfxControlBar.h をコメントに
- CAboutDlg : CDialogEx となっているので,CDialog に
- CShellManager 関係をコメントに
- ON_COMMAND(ID_HELP, &CWinApp::OnHelp) をコメントに
ここまででビルド,実行はできたが,なんか変
VC 10 でのダイアログエディタの操作は可能だが,VC 6 では出来ない.
VC 10 で編集したものを,VC 6 でビルド,実行は可能?
ON_BN_CLICKED(IDC_XXX, &CBrwFileDlg::OnClickedXxx) の ‘&’ が邪魔.
* ここの情報は,動作などを保証するものではありません.個人的なメモです.
画像付ファイル名のリストボックス
ヘッダファイルへの追加
#include “DImgS.hxx” または “DImg.hxx”
#include “ODrawDcM.hxx”
ListBoxDocMF m_ListDImage;
CArray <DImageS,DImageS> DImgAry ; または <DImage,…>
OnInitDialog など
m_ListDImage.SubclassDlgItem(IDC_XXXX_FILE_LIST,this) ;
m_ListDImage.Init() ;
m_ListDImage.ResetContent() ;
リストに表示するファイルの設定
DImgAry.RemoveAll() ;
for (int dIndex=0 ; dIndex<addFiles.GetSize() ; dIndex++) {
DImageS dImg ; または DImage
dImg.SetFileName(addFiles[dIndex]) ;
DImgAry.Add(dImg) ;
}
m_ListDImage.ResetContent() ;
for (int rIndex=0 ; rIndex<DImgAry.GetSize() ; rIndex++) {
CString fileName = DImgAry.GetAt(rIndex).GetFileName() ;
m_ListDImage.AddString(fileName,fileName) ;
// 以下は登録時に画像を付ける場合
CString mfName = CacheFile::GetCF_Name(fileName,1000) ;
if (::FileIsExist(mfName)) {
m_ListDImage.SetAtDocMF(rIndex,mfName) ;
}
else {
HICON icon = DImageS_GetIcon(fileName) ;
m_ListDImage.SetAtIcon(rIndex,icon) ;
}
}
DImageS クラスでなく DImage クラスを使用した場合は,ImageDMF クラスをサポートする形になる.
DImageS クラスでは,対応付けた EMF での動作になる.
現状の ListBoxDocMF では Shell Extension を利用できないみたい.
別のクラスを用意するか変更が必要.間にListBoxDocSE などを用意するか?
ファイルを選択した状態で explorer.exe
explorer.exe /select,c:~exmple.txt
http://support.microsoft.com/kb/314853/ja
https://www.betaarchive.com/wiki/index.php?title=Microsoft_KB_Archive/314853
void CXxxxDoc::OnExecExplorer()
{
CString docName = GetPathName() ;
ShellExec se ;
se.SetNon2QMark(TRUE) ;
se.SetFile(_T("explorer.exe")) ;
se.SetParamaters(_T("/e,/select,")+docName) ;
se.Execute() ;
}
タスクバーのドキュメント
mk:@MSITStore:X:MSDNShellcc.chm::/platform/Shell/Shell_Int/Taskbar.htm
http://msdn.microsoft.com/ja-jp/library/cc144179(VS.85).aspx