■過去ログ置き場に戻る■ 1- 前250 次250 最新50


[memo] "9999999999_00.html#R20" という感じで、URLの最後に "#RレスNo" を追加すると幸せになれます。

Win32API質問箱 Build44
251 名前:デフォルトの名無しさん :2006/07/11(火) 11:08:42
GetLastErrorしなかった自分を呪え

252 名前:デフォルトの名無しさん :2006/07/11(火) 11:39:55
VS2003.NET VC++ MFC未使用です
任意のアプリケーションが起動したことを知るにはどうしたらよいでしょうか?
あるアプリを起動させておき、ターゲットアプリが起動したらアクションを起こしたいのですが。。
よろしくお願いいたします。

253 名前:デフォルトの名無しさん :2006/07/11(火) 11:59:17
>>252
フックでもすればいいのでは?

254 名前:デフォルトの名無しさん :2006/07/11(火) 12:07:17
言葉足らずですみません
ターゲットアプリが起動していなければ待機し、
起動したらフックをかけるアプリを作成したいのです。

まだフックについて勉強不足ですが、それもフックで可能なのでしょうか?


255 名前:デフォルトの名無しさん :2006/07/11(火) 13:13:04
有効なファイル名(ファイル名として使える文字で構成されている)かどうかをチェックするAPIってあったっけ?

256 名前:デフォルトの名無しさん :2006/07/11(火) 13:15:51
>>254
出来る

257 名前:254 :2006/07/11(火) 13:53:21
>>256
ヒントいただけないでしょうか・・・?
ターゲットアプリが起動していない状態でフックをかけるということでしょうか?
起動していないとできないと思ったのですが。。。

258 名前:デフォルトの名無しさん :2006/07/11(火) 14:04:58
プロセス監視はだめぽ?

259 名前:デフォルトの名無しさん :2006/07/11(火) 14:44:12
フックって言ってもいろいろあるだろ、何のフックか書いてくれんとわからんぞ。

260 名前:デフォルトの名無しさん :2006/07/11(火) 14:47:44
船長に決まってるじゃないか!!

261 名前:デフォルトの名無しさん :2006/07/11(火) 14:52:36
赤いモサモサの事だろ

262 名前:254 :2006/07/11(火) 15:10:14
失礼しました
フックはWH_CALLWNDPROCです

263 名前:デフォルトの名無しさん :2006/07/11(火) 15:15:51
>>257
グローバルフック


264 名前:254 :2006/07/11(火) 17:00:41
WH_CBTを使ってやって見たいと思います。
ありがとうございました

265 名前:254 :2006/07/11(火) 17:39:57
連投すみません。
起動したウィンドウがターゲットプログラムのときにTSK_CREATEを
作成アプリに通知し、作成アプリ側で受け取って操作できるようにしました。

WH_CBTフックのプロシージャ
LRESULT CALLBACK MySysHookWndProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if(nCode == HCBT_CREATEWND){
CBT_CREATEWND *pcw = (CBT_CREATEWND *)lParam;
if(pcw->lpcs->lpszClass == TARGET_CLASS_NAME){
SendMessage(g_hCallExe, TSK_CREATE, 0, 0);

}
return 0;
}
return CallNextHookEx(g_hSysHook, nCode, wParam, lParam); //次のフックを呼ぶ
}

アプリ側
switch(msg){
case TSK_CREATE:
MessageBox(hWnd, "起動しました", "", MB_OK);
break;
}

しかし、これで実行するとターゲットプログラムの起動前にメッセージボックスの発生が
無限ループになり、作成アプリを強制終了しないとターゲットプログラムが起動しませんでした。
TSK_CREATEを一回だけ通知し、ターゲットプログラムを起動するにはどうしたらよいのでしょうか?
よろしくお願いします。

266 名前:デフォルトの名無しさん :2006/07/11(火) 19:30:03
>>265

WH_CBTフック
Windowsは、 次に示す処理を行う前に、 WH_CBTフック プロシージャを呼び出す。
・ウィンドウのアクティブ化、 作成、 破棄、 最大化、 アイコン化、 移動、 サイズ変更
・システム メッセージ キューからのマウス イベントやキーボード イベントの削除
・入力フォーカスの設定
・システム メッセージ キューの同期化

あなたのコーディングでは、無限ループになります。
TSK_CREATEをキャッチして "MessageBox" を呼び出す。
その "MessageBox" のアクティブ化をキャッチして "TSK_CREATE" を発行。
TSK_CREATEをキャッチして "MessageBox" を呼び出す。

よって、"MessageBox" では無く、自前で簡単なロギングウィンドウを作成し
そのウィンドウに処理状況を出力する。

267 名前:デフォルトの名無しさん :2006/07/11(火) 19:31:49
266の追加
ロギングウィンドウは事前に作成しておく。

268 名前:254 :2006/07/11(火) 20:52:26
>>266
レスありがとうございます。

if(nCode == HCBT_CREATEWND)
で、ウィンドウの作成に限定し
if(pcw->lpcs->lpszClass == TARGET_CLASS_NAME)
で、作成されたプロセスのクラスが起動を確認したいアプリのクラスと同じか確認して
TSK_CREATEの発行をターゲットアプリが起動したときに限定しているつもりだったのですが、
これでもMessageBoxのアクティブ化時にTSK_CREATEが発行されるのでしょうか?

269 名前:デフォルトの名無しさん :2006/07/11(火) 21:01:53
>if(pcw->lpcs->lpszClass == TARGET_CLASS_NAME)
はlstrcmp()使わなくて良いのか?

270 名前:デフォルトの名無しさん :2006/07/11(火) 21:03:49
>>254
この辺参照して↓
アトムなら文字列にしてから比較した方がいい。
http://support.microsoft.com/default.aspx?scid=kb%3Bja%3B106079


271 名前:デフォルトの名無しさん :2006/07/11(火) 21:18:55
こんばんは。
趣味でWebカメラのプログラミングを始めました。
現在傍らにある本は「ロボットの目をつくる」というトランジスタ技術の増刊号です。
この本でパン、チルト機能がついたQCamOrbitというWebカメラのプログラムが公開されており、それに挑戦していま

す。
それを参考にVisualCとOpenCVでカメラから画像を取得して処理をするところまでは出来ました。
しかしカメラを動かすところについては「あとは出来るでしょ」といった感じで省略されていました。
残念ながらボクの力では動かすことは出来ませんでした。
一週間ほど検索していましたが、とっかかりすら掴めない有様です。
最後の砦だとここにすがりつきに参りました。
どうかヒントだけでも、宜しくお願いします。

雑誌にはドライバに機能が用意されている、という記述がありました。
今はドライバが入っているCDを中心にあたっています。



目的 Webカメラをパン、チルトさせたい

環境 Windows2000
VisualC++ 6.0
QcamOrbit

272 名前:デフォルトの名無しさん :2006/07/11(火) 21:27:46
>>271
http://www.vector.co.jp/soft/winnt/hardware/se383160.html


273 名前:271 :2006/07/11(火) 21:32:35
>>272
すばやい返信ありがとうございます。
しかし、残念ながらこのプログラムは私の環境では動かなかったのです。
具体的にはDevice番号が(本来は自動取得のはずなのに)取得できませんでした。
動かなくても、このソースを解読して知識を深めるべきでしょうか?


274 名前:271 :2006/07/11(火) 21:39:04
さらに、言い訳なのですが、
このプロジェクトにはioctl2.hというヘッダファイルが入っておらず、
自分のPCではコンパイルできませんでした。

これらの話も最初の質問時にすべきでした、もうしわけありません。

275 名前:デフォルトの名無しさん :2006/07/11(火) 21:49:17
ドライバはUSBに機器をつないだ状態でインストールする必要があるような気がします。
ドライバがちゃんとインストールされていなければ、それほど参考にならないかもしれません。
(デバイスドライバをCreateFileで開いてDeviceIoControlで制御、という流れは参考になるかもしれませんが)
雑誌にドライバが付いてきているなら、そちらに戻ってみるのが良いと思います。


276 名前:デフォルトの名無しさん :2006/07/11(火) 21:59:11
>>274
ioctl2.h の内容は、vbの方を読むとこんなところでしょう。
#define IOCTL_BULKUSB_VENDORREQUEST_OUT 0x220014
#define CTL_DEVICE_NAME_ASCII "\\\\.\\filtCtlp"
#define URB_FUNCTION_VENDOR_DEVICE 0x17

typedef struct _PARAM_VENDOR_REQUEST
{
DWORD Function;
DWORD TransferFlags;
BYTE ReservedBits;
BYTE Request;
DWORD Value;
DWORD Index;
BYTE Dummy[2];
} PARAM_VENDOR_REQUEST;

#define MAX_BUFSIZE_BULK (1024 + 100)

typedef _PARAM_VENDOR_REQUEST_WRITE
{
DWORD Function;
DWORD TransferFlags;
BYTE ReservedBits;
BYTE Request;
DWORD Value;
DWORD Index;
BYTE Dummy[2];
BYTE buf[MAX_BUFSIZE_BULK];
} PARAM_VENDOR_REQUEST_WRITE;

277 名前:271 :2006/07/11(火) 22:09:12
>>275
う〜ん、一応カメラは繋いだ状態でインストールしたつもりなのですが。
なにか不備があったかのも知れません。
しかし流れは参考になるかも知れませんが、という一文だけでもずいぶん参考になります。
すこし読む気がでてきました、ありがとうございます。

>>276
ありがとうございます。
なんとなく読んで内容を書けてしまうなんて凄いですね。
ちなみに無謀にも何も考えずこぴぺして実行したところエラーが出てしまいました。
(構文エラーが1,2個あるといった程度な気もしますが)
参考にさせてもらいます。

278 名前:デフォルトの名無しさん :2006/07/11(火) 22:48:03
手取り足取り教えて君なので釣りかと思ったが
まあがんがれ

ただ微妙にスレ違いな話題なので他の場所に
移動した方がよい鴨試練


279 名前:デフォルトの名無しさん :2006/07/12(水) 11:22:35
諸先輩方、宜しくお願いします。

IMEの状態(漢字モードON又は漢字モードOFF)を
取得する方法を教えて下さい。

280 名前:デフォルトの名無しさん :2006/07/12(水) 11:24:00

http://www7a.biglobe.ne.jp/~tsuneoka/win32tech/7.html


281 名前:279 ◆lnkYxlAbaw :2006/07/12(水) 11:54:39
「表7-5:新しいIME API」
いっぱいあるね、どりですか?


282 名前:デフォルトの名無しさん :2006/07/12(水) 12:23:20
>>281
全部書いてあるのに、何故たずねる?

283 名前:279 ◆lnkYxlAbaw :2006/07/12(水) 12:43:00
>>282
構ってほしいから。

284 名前:254 :2006/07/12(水) 14:01:48
>>269
>>270

if(nCode == HCBT_CREATEWND)
{
CBT_CREATEWND *pcw = (CBT_CREATEWND *)lParam;
GetAtomName(LOWORD(pcw->lpcs->lpszClass), szBuf, 10);

if(!(strcmp(szBuf, "ClassName")))
{
PostMessage(g_hCallExe, TSK_CREATE, wParam, 0);
return 0;
}
}
とすることで望みどおりの動作をさせることができました
ありがとうございました


285 名前:デフォルトの名無しさん :2006/07/12(水) 15:34:54
C#でUpdateLayeredWindowを使用してピクセル単位の透過に挑戦しているのですが、
LayeredWindowをWMP等動画を再生してるウィンドウの上へ持って行くと、どうしてもちらついてしまいます・・・orz
(オーバレイモードだと大丈夫なようです。)
ソースはttp://yellow.ribbon.to/~azumaya/doc_dotnet_uplayeredwnd.phpとほぼ同等です。
どなた様かご教授よろしくお願いいたします。。

286 名前:285 :2006/07/12(水) 15:53:48
すいません、補足です・・・
・フォームはTopMost=trueにしております。
・"ビデオミキシンクレンダを使う"のチェックを外しても、ちらつきが無くなるようです。

287 名前:デフォルトの名無しさん :2006/07/12(水) 15:54:53
>>286
どうにもならないので Vista を待ってください。

288 名前:デフォルトの名無しさん :2006/07/12(水) 18:47:55
こんにちは。
BMP画像を表示させるアプリケーションを作っています。
Borland C++ Compiler 5.5 でコンパイルしたところ、
リソースファイルで指定したビットマップのファイルが1Mを越えたあたりで
コンパイルエラーで実行ファイルが作成できません。
指定ファイルの上限などあるのでしょうか。

初心者で、説明がわかりにくいところもあるかと思います。
どうぞよろしくおねがいいたします。

289 名前:デフォルトの名無しさん :2006/07/12(水) 20:47:14
(´-`).oO(エラーの内容をなんで書かないんだろう…

290 名前:デフォルトの名無しさん :2006/07/12(水) 20:49:27
ようやく復旧したか

291 名前:デフォルトの名無しさん :2006/07/12(水) 21:19:25
>>288
自分の最高は768kbだが、そこまでは大丈夫だろう。

292 名前:288 :2006/07/12(水) 21:30:00
288です。
どうもすみません。
BCC32 -W test.c
は問題ありません。
そのあと
BRC32 test
をすると

Borland Resource Compiler Version 5.40
Copyright (c) 1990, 1999 Inprise Corporation. All rights reserved.
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland

とコマンドプロンプトに表示された後、
「問題が発生したため、Turbo Incremental Linker を終了します。 ご不便をおかけして申し訳ありません。」
という画面がでてきます。(エラー報告を送信する・送信しないというボタンのある画面です)

送信しないをクリックするとコマンドプロンプトの画面に戻り
「** error 1 ** deleting kaw70.exe

d:\docs\mydoc\cfile>

とコマンドプロンプトに表示されます。

つづく

293 名前:288 :2006/07/12(水) 21:30:34
292のつづき

test.rc の中身
///
Oth1 BITMAP "4.bmp"
Oth2 BITMAP "5.bmp"
Oth3 BITMAP "6.bmp"
Oth4 BITMAP "7.bmp"
Aug BITMAP "8.bmp"
Sep BITMAP "9.bmp"
Oct BITMAP "10.bmp"
Nov BITMAP "11.bmp"
Dec BITMAP "12.bmp"
///
↑だとエラー
///
Oth3 BITMAP "6.bmp"
Oth4 BITMAP "7.bmp"
Aug BITMAP "8.bmp"
Sep BITMAP "9.bmp"
Oct BITMAP "10.bmp"
Nov BITMAP "11.bmp"
Dec BITMAP "12.bmp"
///
↑だとエラーは出ず、test.exeが作成されます。

というながれです。
ながくてすみませんが、よろしくおねがいします。

294 名前:デフォルトの名無しさん :2006/07/12(水) 22:14:32
>>292-293
コンパイラの問題みたいだし、スレ違いっぽいけど。

295 名前:デフォルトの名無しさん :2006/07/12(水) 22:18:32
>>292
それリンカが異常終了してんじゃん?
このスレでわかる人がいればいいけど。
・環境依存の話なのでBCCのスレで聞く
・リンカのバグフィックスされたバージョンを使う
ことをおすすめする。

296 名前:288 :2006/07/12(水) 22:38:28
アドバイス、ありがとうございます。
BCCのスレで質問してみます。

297 名前:285 :2006/07/12(水) 22:54:12
>>287
レスありがとうございます。
OSの問題という事でしょうか。。

微妙に話変わりますが、SetLayeredWindowAttributesでフォーム切り抜きをしてもちらつくんですね。
LayeredWindowはこういう仕様なのかな・・・。
あるアプリでは、画像をある色で透過させてちらつき皆無で画面に表示させていましたが、
SetWindowRgnでやってたんですかね?

298 名前:デフォルトの名無しさん :2006/07/12(水) 23:17:00
PCやグラフィックカードの仕様も書かずによくそんな質問が出来るな

299 名前:285 :2006/07/12(水) 23:33:05
>>298
仕様とは私のPCのスペックの事でしょうか?
そうとなると、環境依存の現象という事ですか?

300 名前:デフォルトの名無しさん :2006/07/13(木) 01:16:29
エクスプローラのリストビューにはソート順を表す▲や▼マークが表示されますが
これはコモンコントロールとしてサポートされてる機能でしょうか?
もしそうであれば、どういう手順で表示するのでしょう?

301 名前:デフォルトの名無しさん :2006/07/13(木) 01:35:16
SPY使ってみた?

302 名前:デフォルトの名無しさん :2006/07/13(木) 01:42:27
>>300
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/header/header.asp

303 名前:デフォルトの名無しさん :2006/07/13(木) 12:44:53
メモ帳を起動して自動的にファイルを読み込むプログラムを作っていて、
ファイルを開くダイアログボックスを出すところまでは出来ているんですが、
ダイアログボックスのハンドルの取得の仕方が分かりません。
検索してもなかなか分からなかったので、
どうかお教え下さい。



304 名前:デフォルトの名無しさん :2006/07/13(木) 12:50:35
notepad.exe file_name

305 名前:デフォルトの名無しさん :2006/07/13(木) 12:50:43
日本語でおk?

306 名前:デフォルトの名無しさん :2006/07/13(木) 12:52:41
>>303
メモ帳だったら、コマンドラインでいけなくない?

307 名前:デフォルトの名無しさん :2006/07/13(木) 12:57:43
>>303
このスレ的に回答すると ShellExecute() って所か?
どちらにしろ、やり方が間違ってると思われ。

308 名前:デフォルトの名無しさん :2006/07/13(木) 13:02:47
>>306
将来的にアプリケーションを自動的に操作したい思っていまして、
これはあくまで練習用です。説明が足りなかったですね…
もう少し詳しく言うとCreateProcess()で起動させたプロセスに、
SendMessage()などを使用してメッセージを投げるというような形で、
処理を実現させようと考えているのですが、
まぁ要はダイアログのハンドルを取得するAPIはあるのかなと。

逆の場合だったらGetParent()を使うみたいですが。

309 名前:デフォルトの名無しさん :2006/07/13(木) 13:06:45
EnumChildWindowsとかで探すとか?

310 名前:デフォルトの名無しさん :2006/07/13(木) 13:07:24
>>307
どの辺りが間違っているのか、詳しくお聞かせ願えないでしょうか?
細かい部分の処理なのか、それとも自動化のアプローチ自体なのか。


311 名前:デフォルトの名無しさん :2006/07/13(木) 13:13:04
>>309
その方法で解決出来るような気がしてきました。
皆様どうもありがとうございました。

312 名前:デフォルトの名無しさん :2006/07/13(木) 17:11:25
糞ソフトがまた一つ増えました

313 名前:デフォルトの名無しさん :2006/07/13(木) 19:20:04
ユーザにファイルを選ばせたいのならダイアログが
表示された時点で成功なんじゃ?

314 名前:デフォルトの名無しさん :2006/07/13(木) 21:22:06
【IT】Microsoft、「Virtual PC 2004」の無償提供を開始
http://news19.2ch.net/test/read.cgi/newsplus/1152788480/


315 名前:デフォルトの名無しさん :2006/07/13(木) 22:39:35
>>313
いや、だからダイアログ操作するとかは練習用なんでしょ?
実際は別のことをやりたいんじゃね?

316 名前:デフォルトの名無しさん :2006/07/14(金) 01:48:34
win32APIを説明したサイトを見ると、関数の仮引数の名前を省略している場合があります。

int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PTSTR pszCmdLine, nCmdLine)

int WINAPI _tWinMain(HINSTANCE hinstExe, HINSTANCE, PTSTR pszCmdLine, int)

VC ExpressのIDE上でコンパイルしたところ、確かにコンパイルが通ります。
しかし、まったく同じソースを、コマンドライン(cl.exe)でコンパイルしたところ、
エラーになってしまいます。以下がログメッセージです。

>error C2055: 型リストではなく、仮パラメータ リストが必要です。

これは何が原因なんでしょうか?

317 名前:デフォルトの名無しさん :2006/07/14(金) 01:58:44
WinMainはAPIなのか……。
引数の名前を省略できるのは言語仕様だからスレ違いだと思うが。

318 名前:デフォルトの名無しさん :2006/07/14(金) 03:25:38
質問です。
SYSTEMTIME構造体に入っている時刻をn分進めたり、戻したり、また、n日進めたり、戻したりするAPIはありますでしょうか?
ない場合、何か利用できるものはありませんでしょうか?C++のライブラリ(MFCとか)とかでもかまいません。
使用環境はVS2003です。

319 名前:デフォルトの名無しさん :2006/07/14(金) 04:31:47
SHBrowseForFolderのBIF_NEWDIALOGSTYLEを使ってできるダイアログの
新しいフォルダを作成ボタンにIDOK,IDCANCELみたいなコントロールの識別子割り当てられてますか?

320 名前:デフォルトの名無しさん :2006/07/14(金) 04:33:28
>>318
MSDN嫁。
SYSTEMTIME構造体のメンバを使って時間を足し引きするのはお勧めしないと書いてある。

・SYSTEMTIMEをFILETIMEに変換する(SystemTimeToFileTime()を使う)
・FILETIMEをULARGE_INTEGERにコピーする
  FILETIMEを直接足し引きするのもお勧めできない。X86だと問題なく動くだろうけど。
・ULARGE_INTEGERを使って、時間の足し引きをする(単位は100ナノ秒)
・ULARGE_INTEGERをFILETIMEにコピーする
・FileTimeToSystemTime()で、SYSTEMTIMEに直す

321 名前:318 :2006/07/14(金) 08:31:44
>>320
レス、ありがd。

↓こんな感じでいいのでしょうか?
SYSTEMTIME stime; FILETIME ftime; ULARGE_INTEGER ulint;
GetLocalTime(&stime);
SystemTimeToFileTime(&stime, &ftime);
ulint = ftime; // or ulint.LowPart = ftime.dwLowDateTime; ulint.HighPart = ftime.dwHighDateTime;
ulint.QuadPart += 10 * 1000 * 60 * 20; //20分進める。
ftime = ulint; // or ftime.dwLowDateTime = ulint.LowPart; ftime.dwHighDateTime = ulint.HighPart;
FileTimeToSystemTime(&ftime, &stime);

> MSDN嫁。
失礼。かなり読んだのですが、ここまでたどり着けませんですた。

> SYSTEMTIME構造体のメンバを使って時間を足し引きするのはお勧めしないと書いてある。
お薦めしない理由を知ってたら、だれか解説キボン。

322 名前:デフォルトの名無しさん :2006/07/14(金) 09:25:46
そういう計算は考慮してないんだろう

323 名前:デフォルトの名無しさん :2006/07/14(金) 13:08:09
コマンドプロンプトから起動したとき、
1) 起動時に/wオプションをつけた場合はウィンドウ表示
2) つけなかった場合は、起動したコマンドプロンプトを対象にcin/coutで入出力
ということをしたいのですが、方法がわかりません。

ウィンドウアプリとして作成し、AllocConsole() APIを使用した場合、
新たにコンソールウィンドウが生成されてしまいます。
また、リダイレクトでの入力(cinでの入力)が使えません。
作成しているプログラムをprog.exeとすると、例えば
C:\> dir | prog.exe /w
↑このようにしたとき、dirの標準出力をprog.exeで読みつつウィンドウ表示もしたい。

C:\> prog.exe
Sample Program v1.0......
...
↑このように/wなしのときは通常のコンソールアプリのように実行してほしい。

324 名前:デフォルトの名無しさん :2006/07/14(金) 13:24:46
>>321
FILETIMEは以前memcmpで比較しようとして正しい結果が得られないで何故か悩んだ結果、宣言が下位、上位の順で並んでるからという結論に至った。

実際は、桁あふれ等を考慮しつつ自分で書かなきゃいけなくて場合分けがめんどくさいからお薦めしないだけ、もしくは仕様変えても文句いうなよ、っていう脅しだと思う。

325 名前:デフォルトの名無しさん :2006/07/14(金) 14:53:27
>>323

GetStdHandle()

326 名前:デフォルトの名無しさん :2006/07/14(金) 14:55:08
>>323

http://www.microsoft.com/japan/msdn/accessibility/general/atg_consoleaccessibility.aspx


327 名前:デフォルトの名無しさん :2006/07/14(金) 14:57:32
>>323

ちょっと話題から外れるけど参考までにこちらも

http://support.microsoft.com/default.aspx?scid=kb;JA;190351

328 名前:318 :2006/07/14(金) 15:21:44
>>322,324 Thx.


329 名前:デフォルトの名無しさん :2006/07/14(金) 17:02:48
>>316
C++では仮引数名を省略でき、Cではできない。

VC++のIDEでプロジェクトを作るとデフォルトでは拡張子cのファイルも
C++としてコンパイルするようオプションが指定されている、/TPか何か。

>>321>>324
320の書き方からしてアラインメントの問題だろう。

330 名前:デフォルトの名無しさん :2006/07/14(金) 18:56:40
Wininet.DLL を使用してftpサーバ(telnetも使用可)からファイル情報を取得したいのですが、
FtpFindFirstFile,FtpFindNextFile関数ではファイル名・サイズ・最終更新日などしか取得できません。
他に、パーミッション・オーナー名・グループ名などの情報も取得したいのですが、
どのようにしたら良いのでしょうか?
言語はVB6です。よろしくお願い致します。

331 名前:デフォルトの名無しさん :2006/07/14(金) 19:16:44
接続先のファイルシステムに、そういうものがあるとは限らないわけだが。


332 名前:デフォルトの名無しさん :2006/07/14(金) 19:33:16
>>331
サーバはUNIX(AIXだったかな?)のみです
ls -al コマンドで表示される情報が取得できれば良いのですが...

333 名前:デフォルトの名無しさん :2006/07/14(金) 19:33:33
そういう馬鹿でも使える系のapiはそういうものだとわりきって使ってください。

334 名前:デフォルトの名無しさん :2006/07/14(金) 21:52:35
いまさらftpなんてつかうなよ


335 名前:デフォルトの名無しさん :2006/07/14(金) 22:18:26
今はftpの代わりに何を使うの?

336 名前:デフォルトの名無しさん :2006/07/14(金) 22:19:36
今でもftpはメジャーなので心配するな

337 名前:デフォルトの名無しさん :2006/07/14(金) 22:27:14
sftpに決まってるじゃん


338 名前:デフォルトの名無しさん :2006/07/14(金) 22:28:03
^~

339 名前:デフォルトの名無しさん :2006/07/14(金) 22:54:24
陰毛落としていくなよ

340 名前:デフォルトの名無しさん :2006/07/14(金) 23:14:15
http://www.atmarkit.co.jp/fnetwork/rensai/netpro11/netpro01.html
とりあえずこんな感じで

341 名前:デフォルトの名無しさん :2006/07/15(土) 05:18:15
クラス名かウインドウハンドルから、サブクラス化される前のオリジナルの
WindowProcを取得する方法ってないですか?

342 名前:デフォルトの名無しさん :2006/07/15(土) 07:08:37
既にサブクラス済みのウィンドウから、サブクラス前のWndProcを取るって事?
だったら無理だと思う。

343 名前:デフォルトの名無しさん :2006/07/15(土) 07:29:09
GetClassLongPtrで大元のウィンドウプロシージャを取得することはできると思う。
ただ2重3重にサブクラス化されていたら341はどうしたいのかが問題だ。

344 名前:デフォルトの名無しさん :2006/07/15(土) 09:36:00
>>341

DefaultWindowProc

345 名前:デフォルトの名無しさん :2006/07/15(土) 17:45:17
pu

346 名前:デフォルトの名無しさん :2006/07/15(土) 18:43:29
ge

347 名前:デフォルトの名無しさん :2006/07/15(土) 18:52:44
t Sound

348 名前:デフォルトの名無しさん :2006/07/15(土) 19:28:21
一応できました。タブ巡回。
WBC003.LZH:SDKレベルでWebBrowserコントロールを使用して簡易ブラウザを作るサンプル(C++)
http://winscript.s41.xrea.com/upload/source/No_0019.lzh
ですがこれが完全に正しいやり方なのか確信が持てません。みなさんはどう思われますか? 窓API的におかしい所ないでしょうか? (でも結局自作コントロールでは通用せず・・・)
  g_pOleInPlaceActiveObject->OnFrameWindowActivate(TRUE);
  g_pOleInPlaceActiveObject->OnDocWindowActivate(TRUE);
  for(;;)
  {
    if (!IsWindow(g_hWndMain))
    {
      break;
    }
    GetMessageA(&msg, NULL, 0, 0);
    hr = g_pOleInPlaceActiveObject->TranslateAccelerator(&msg);
    if (hr == S_OK)
    {
      DispatchMessageA(&msg);
    }
    else if (hr == S_FALSE)
    {
      if (!IsDialogMessageA(g_hWndMain, &msg))
      {
        TranslateMessage(&msg);
        DispatchMessageA(&msg);
      }
    }
  }
なお、IsWindow()でループ脱出するのは気にしないでください(^^;)DefWindowProc使ってるのでこうなるのです。
ここはGetMessage()==FALSEで判断されているのだと思って下さい(^^;;;)いずれウィンドウプロシージャは設置するつもりです。
で、OnFrameWindowActivate/OnDocWindowActivate()は、本当はウィンドウプロシージャのWM_ACTIVATE中で呼び出し、ステートに応じてTRUE/FALSEするのが正しいと思うのですが、なぜこれをコントロールに通知しなければならないのでしょうか?
例えばアニメーションを表示するコントロールとかで非アクティブになった時にアニメを停止するとか?

349 名前:デフォルトの名無しさん :2006/07/16(日) 16:05:38
質問!
w2kで/dev/randomのようなPRNG(疑似乱数生成器)は利用できますか?

350 名前:デフォルトの名無しさん :2006/07/16(日) 18:01:23
>>349
ヒント: Crypto API

351 名前:デフォルトの名無しさん :2006/07/16(日) 18:57:05
>>350
マジd
CryptGenRandom()発見!

352 名前:デフォルトの名無しさん :2006/07/16(日) 20:03:11
質問です。
WindowsSocketに使われてる関数 たとえば、connect()関数の中に
const struct sockaddr FAR * name だとか
const char FAR * aptval と書いてあるのですが、
FAR* って何の意味があるのでしょうか?
定義を調べてみたところ 
#define FAR far
#define far
と書いてありました。特に意味がないように感じるのですが、なぜ付いているのでしょうか?

353 名前:デフォルトの名無しさん :2006/07/16(日) 20:04:54
Win16時代の名残

354 名前:デフォルトの名無しさん :2006/07/16(日) 20:07:14
昔はfarとかhugeとかセグメントとか64kの壁とか色々大変だった

355 名前:デフォルトの名無しさん :2006/07/16(日) 23:08:54
vc使ってデスクトップ転送ソフト作ってるんですけど、
ビットマップのまま転送すると重たいので、
jpegなど、何らかの形で圧縮して転送しようと思います。
色々検索してるのですが、以下の条件にあうやり方が見つからなくて困ってます。
何かよい方法ありませんか?

1."できるだけ"windows標準のライブラリだけで作りたい。
(dll置くだけインストールできるようなライブラリなら使っても良いかもです)
2.メモリ上で圧縮、展開を行いたい。ハードディスクは仲介したくない。




356 名前:デフォルトの名無しさん :2006/07/16(日) 23:15:02
age

357 名前:デフォルトの名無しさん :2006/07/16(日) 23:29:32
>>355
Windowsつってもバージョンで相当変わるわけだが。
Gdiplus使っていいならpngでもjpgでも何でもどうぞ。

358 名前:デフォルトの名無しさん :2006/07/17(月) 00:12:25
>>357 レスどうもです。



Gdiplusってwindows2000にインストールできましたっけ?
できれば、XPと2000で動かしたいんで。

359 名前:デフォルトの名無しさん :2006/07/17(月) 00:16:20
>>358
インストールは出来るけどデフォでは付いてない。
再配布版gdiplus.dllを添付すれば2kもXPもOKな筈。

360 名前:デフォルトの名無しさん :2006/07/17(月) 00:19:06
>>359 ありがとうございます。

ちょっとやってみます。

361 名前:デフォルトの名無しさん :2006/07/17(月) 01:10:10
キャプチャボードからの映像信号を表示するソフトの映像部の色を
GetPixel()関数で取得したいと思ったのですが、できませんでした。
調べてみると、どうも映像がビデオレンダラーというハンドル(?)に関連していることが
原因のようです。
どうすればイイでしょうか?

362 名前:デフォルトの名無しさん :2006/07/17(月) 02:30:48
おれもそれ知りたいかな。
ビデオカードか何かのオーバーレイ機能だよな。多分。

363 名前:デフォルトの名無しさん :2006/07/17(月) 02:34:00
それは、GetPixel()でのみ失敗するかね?
それとも他の関数でも失敗するかね?

364 名前:デフォルトの名無しさん :2006/07/17(月) 08:14:03
>>361
オーバーレイ表示になってると思うからGetPixelじゃ無理だとおもう。
DirectShowのインタフェース取れるならISampleGrabberインタフェースで画像は取れるみたいだけど他のアプリだと‥‥

365 名前:デフォルトの名無しさん :2006/07/17(月) 08:22:55
「USBが入力された時」をどうすればフックできますか?
WM_の中に有るかも、だけどWM_多すぎorz


366 名前:デフォルトの名無しさん :2006/07/17(月) 09:13:49
>>365
意味がわからない。「USBデバイスが接続された時」?

367 名前:デフォルトの名無しさん :2006/07/17(月) 11:07:40
そうです。色々検索してみたけど全く出てこなかった。
検索語句が悪いのかな。
USBが接続された時、タスクバーの所に「○○が接続されました」みたいな
メッセージが出ますよね。だからAPIか何かで
そのタイミングを捕まえることができないのかなと。

368 名前:デフォルトの名無しさん :2006/07/17(月) 11:14:01
WDM

369 名前:デフォルトの名無しさん :2006/07/17(月) 11:15:49
WM_DEVICECHANGE

370 名前:361 :2006/07/17(月) 15:28:31
>>363
GetDCはできたような・・・
>>364
そうですか。
ありがとうございました。

371 名前:デフォルトの名無しさん :2006/07/17(月) 15:38:40
どうでもいいかもしれないけど、
動画なんかでPrintScreenキーが使えないという話も、結局根は同じなんだろうな。

372 名前:デフォルトの名無しさん :2006/07/17(月) 17:27:48
>>369 サンクス

373 名前:デフォルトの名無しさん :2006/07/17(月) 19:30:32
>>371
出来るものもある


374 名前:デフォルトの名無しさん :2006/07/17(月) 23:12:27
メニューのオーナードローについて教えてください。

プログラムはほぼ出来たのですが、一点不可解なことが残っています。

サブメニューを持った項目の右横にある小さい三角のマークが、
Windows側で描画されているようです。それはいいのですが、
サブメニューをGRAYED状態にしてもマークがマウスの移動を
感知して白黒反転してしまいます。

オーナードローをしなければサブメニュー項目をGRAYEDに
すると、三角マークもグレーに固定されます。

オーナードローを使ったときに、サブメニューを持った項目
のGRAYED状態を3角マークにも反映させる方法を教えてください。

ご存知の方、よろしくお願い致します。


375 名前:デフォルトの名無しさん :2006/07/18(火) 01:24:16
ウェブ上のMSDNのAPIリファレンスってどうやって見るの?前は見れたのに

376 名前:デフォルトの名無しさん :2006/07/18(火) 01:41:17
ttp://msdn.microsoft.com/library/
見れるけど

377 名前:デフォルトの名無しさん :2006/07/18(火) 03:38:15
サーバエラーってなるんだけど

378 名前:仕様書無しさん :2006/07/18(火) 04:44:24
CImageに設定されている画像(PNG)を、
ネットワークで他のマシンに転送して表示させたいのですが、
CImageに設定されている生データ(PNG形式)を取得、設定する方法を
msdnで見つけられなくて困っています。
誰かご存知ないでしょうか?

379 名前:仕様書無しさん :2006/07/18(火) 04:51:04
>377
ttp://msdn2.microsoft.com/ja-JP/library/

>378
CImageクラスは、ファイルから読み込んだ画像を元の画像形式とは無関係
にビットマップ形式で保存しているので、PNGでの取得はムリ。

380 名前:デフォルトの名無しさん :2006/07/18(火) 18:12:11
>>379
馬鹿な俺に教えてくだされ
どう巡ったらツリービューからAPIリファレンスに辿り着くの?

381 名前:デフォルトの名無しさん :2006/07/18(火) 18:46:48
>>380
Win32およびCOM開発の下なんだけど、今見たらMSDN2日本語版からは消えているみたい。
こっちにはあったから、駄目だったらこっちから行ってみて。
http://msdn.microsoft.com/library/ja/

382 名前:デフォルトの名無しさん :2006/07/18(火) 18:52:52
日本語のは誤訳に情報欠落、古かったりってことが事欠かないから英語版見れ
http://msdn.microsoft.com/library/en-us/dnanchor/html/anch_win32com.asp

383 名前:デフォルトの名無しさん :2006/07/18(火) 23:08:02
IMEを叩いて文字入力をしてるのですが
IME2000では全く問題なかったのにIME2003にしたら
TranslateMessageでエラーが発生するようになってしまいました
状況は日本語入力モードでひらがなを入力し、
変換キーをおして漢字変換しようとすると
メモリ読み込みのアクセス違反エラーが発生します
変換キーを押すだけだと問題ないです

エラー時のMessageの内容
message = 256 = WM_KEYFIRST
wParam = 229 = VK_PROCESSKEY
lParam = 7929857 = ?

解決法を知ってる方、お願いします

384 名前:デフォルトの名無しさん :2006/07/18(火) 23:31:01
>>381-382
すまなんだ
An error occurred on the server when processing the URL.
と出るのは俺のパソの環境が悪いのかな?

385 名前:デフォルトの名無しさん :2006/07/19(水) 00:38:58
>>384
信心が足りんからじゃ!

386 名前:デフォルトの名無しさん :2006/07/19(水) 00:57:57
な、なるほど

387 名前:デフォルトの名無しさん :2006/07/19(水) 11:44:22
WindowsXPのC++にて「MoveFile」関数を使用しています
通常時は上手くいくのですが偶にリターン値が正常なのにも関わらず
move元ファイルが削除されておらず且つ、move先ファイルのファイルが
ロックされたままとなる場合があります

ネットワーク越しのmovefileなので動作が不安定っぽいのですが
movefileExのMOVEFILE_COPY_ALLOWEDとMOVEFILE_WRITE_THROUGHで
解決できるのでしょうか?
みなさんはネットワーク越しのファイル移動はどうやってます?


388 名前:デフォルトの名無しさん :2006/07/19(水) 12:53:36
このスレが妥当かどうかわからんが、regmonやfilemonその他
Windows関連の役立ち情報を公開してるsysinternalsを運営してる
winternals が MS に買収されちまったyo!!


389 名前:デフォルトの名無しさん :2006/07/19(水) 13:21:53
スレ違い 失せろ

390 名前:デフォルトの名無しさん :2006/07/19(水) 14:07:53
>>388
そうなんや。いいのか悪いのかよくわからんニュースやな。

391 名前:デフォルトの名無しさん :2006/07/19(水) 14:24:39
とりあえず systeniternals は全て保存しとくべきだな。

392 名前:デフォルトの名無しさん :2006/07/19(水) 14:24:57
>>388
sysinternalsサイトで公開されている各フリーソフトは十分に役立つ
ソフトが多いのだが。
今後も同じ様な形で運営が行われるのだろうか?。
公開が中止されたら非常に残念なことだと思う。

393 名前:デフォルトの名無しさん :2006/07/19(水) 14:26:35
世界中のヤツラが同じこと考えてるらしく、sysinternals のサイト劇重・・・
DbgView だけでも落としておきたい。

394 名前:デフォルトの名無しさん :2006/07/19(水) 14:56:47
とりあえずFirefoxのScrapbookでサイトごと落としとくかな。

395 名前:デフォルトの名無しさん :2006/07/19(水) 19:07:10
>>388
そりゃ大変だ。
と思ってsysinternalsのサイトを見ようとしたら、めちゃくちゃ重い。


>>392
MSが公開していない、
あるいは、OSのバージョン毎に実装を変える可能性があるので、公開すべきでないと考えている、
情報がかなりあるので、もしそうなったら残念だな。


一応ブログでは、サイトは今まで通りだし、ツールもフリーなままとは言っているけど……。



396 名前:デフォルトの名無しさん :2006/07/19(水) 20:22:20
windef.hに以下のコメント、コードがありました

// Win32 defines _WIN32 automatically,
// but Macintosh doesn't, so if we are using
// Win32 Functions, we must do it here

#ifdef _MAC
#ifndef _WIN32
#define _WIN32
#endif
#endif //_MAC

なんでマックに関する定義があるんですか?
win32apiってマックと何か互換性でもあるのですか?

397 名前:デフォルトの名無しさん :2006/07/19(水) 20:26:38
MACaddress

398 名前:デフォルトの名無しさん :2006/07/19(水) 20:28:03
MSはMacのソフトも開発してるから。

399 名前:デフォルトの名無しさん :2006/07/19(水) 20:52:28
NT4.0までPowerPCとかサポートしてたんだっけ

400 名前:デフォルトの名無しさん :2006/07/19(水) 20:57:48
気になってググってみたらこんなページを見つけた。
http://msdn.microsoft.com/archive/en-us/dnarvc/html/msdn_fromone.asp?frame=true

Macintosh: The Most Difficult Case以下に、Visual C++にはMAC用のクロスコンパイラが存在し、
それにはWin32 APIを実装したライブラリが付属しているということが書いてある。

401 名前:デフォルトの名無しさん :2006/07/19(水) 22:31:16
Mac版のIEもあるし別に不思議なことじゃないと思うが…

402 名前:デフォルトの名無しさん :2006/07/19(水) 22:42:51
MSにはMac部がある。

403 名前:デフォルトの名無しさん :2006/07/20(木) 00:02:54
マ・クベか

404 名前:仕様書無しさん :2006/07/20(木) 00:10:16
2ちゃんねるのトップページ、あの壺はいいものだ!

405 名前:デフォルトの名無しさん :2006/07/20(木) 00:26:55
Mac BUなら、日本語読みしてMac部と言えるね。
http://ja.wikipedia.org/wiki/Mac_BU

406 名前:デフォルトの名無しさん :2006/07/20(木) 00:46:40
そしてMac部長がいるのね

407 名前:デフォルトの名無しさん :2006/07/20(木) 12:01:47
APIの質問ではないのですが
ここなら詳しい方もおられると思いますので
質問させてください。

VC8のリンクの過程で
> xxx.obj : error LNK2001: 外部シンボル ""public: virtual void * __thiscall name::type<char>::`scalar deleting destructor'(unsigned int)" (??_G?$type@D@name@@UAEPAXI@Z)" は未解決です。
> xxx.obj : error LNK2001: 外部シンボル ""public: virtual void * __thiscall name::type<char>::`vector deleting destructor'(unsigned int)" (??_E?$type@D@name@@UAEPAXI@Z)" は未解決です。
のように出力されリンクできません。
http://www.thescripts.com/forum/thread263644.html
によるとVCが勝手に作るヘルパーらしいのですが
解決方法がよく解りません。
MFCやATL等は使用していません。
ご教授お願いします。

408 名前:デフォルトの名無しさん :2006/07/20(木) 13:08:37
スルーされますように

409 名前:デフォルトの名無しさん :2006/07/20(木) 15:13:17
誘導希望

410 名前:デフォルトの名無しさん :2006/07/20(木) 15:35:04
VC++スレ探せ

411 名前:デフォルトの名無しさん :2006/07/20(木) 17:13:03
コンベンショナルモミモミ

412 名前:デフォルトの名無しさん :2006/07/20(木) 17:50:05
ifで「COLORREF型同士が一致する場合」って
どうすればいいですか?
clr == GetPixel(hMChar , i , ib)じゃ駄目みたいなんですが

413 名前:デフォルトの名無しさん :2006/07/20(木) 18:05:03
あ。やっぱいいです。ごめんなさい

414 名前:デフォルトの名無しさん :2006/07/20(木) 18:06:33
(^ω^#)ビキビキ

415 名前:デフォルトの名無しさん :2006/07/20(木) 18:29:05
>>414
許してください。悪気はなかったんです!

416 名前:407 :2006/07/20(木) 23:31:06
すいません自己解決しました。

質問、VCで抽出したのですが
見つからなかったのでここで
お願いしました。

スレ違い失礼しました。

417 名前:デフォルトの名無しさん :2006/07/21(金) 11:35:05
rubyでCD−ROMのトレイを開けるコード書いて

418 名前:デフォルトの名無しさん :2006/07/21(金) 12:08:56
mciSendString("set cdaudio door open",buf,buflen,NULL)

419 名前:デフォルトの名無しさん :2006/07/21(金) 13:37:51
>>418
http://tkoolup.hp.infoseek.co.jp/cgi-bin/src/tkoolup0934.png
こうなってしまうなー

スクリプトaの1行目でNameErrorが発生しました。
Undefined local valuable or method 'buf' for nil:nilclass

420 名前:デフォルトの名無しさん :2006/07/21(金) 14:19:10
>>419
それはさすがにスレ違いだろう・・・

421 名前:デフォルトの名無しさん :2006/07/21(金) 16:15:23
うちでは開いた

422 名前:デフォルトの名無しさん :2006/07/21(金) 16:27:23
くぱぁって開いた

423 名前:デフォルトの名無しさん :2006/07/21(金) 20:37:14
ひぎぃ!

424 名前:デフォルトの名無しさん :2006/07/21(金) 23:03:27
ら、らめぇ

425 名前:デフォルトの名無しさん :2006/07/22(土) 05:13:29
>>421-422
Rubyで実験した?
RGSSで実験した?

426 名前:デフォルトの名無しさん :2006/07/22(土) 05:35:54
Rubyならこうかな。

require 'Win32API'
mciSendString = Win32API.new "winmm","mciSendString",["P","P","I","I"],"I"
mciSendString.call("set cdaudio door open", nil, 0, 0)




427 名前:デフォルトの名無しさん :2006/07/22(土) 07:30:54
>>426
おかしいなあ
おんなじエラーになっちゃうよ
RGSSでためしてみたけど。

428 名前:デフォルトの名無しさん :2006/07/22(土) 07:53:52
社婚

429 名前:デフォルトの名無しさん :2006/07/22(土) 10:27:53
Cで
Windowsが最小化かどうか調べるにはどうしたらいいですか?

430 名前:デフォルトの名無しさん :2006/07/22(土) 10:28:32
WindowsじゃないWindowです><

431 名前:デフォルトの名無しさん :2006/07/22(土) 10:32:53
IsIconic

432 名前:デフォルトの名無しさん :2006/07/22(土) 11:03:32
ありがとうございます><

433 名前:デフォルトの名無しさん :2006/07/22(土) 11:46:03
Process32Nextとかで取得できるPROCESSENTRY32のszExeFileを頼る以外にイメージファイル名を得る方法はありますか?

大抵のプロセスは以下のような感じでOKなのですが
いくつかのプロセスはOpenProcessで失敗してしまいます (GetLastErrorはアクセスが拒否されたといってます

HANDLE ph = OpenProcess( PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, this->pid_ );

HMODULE mh=0; DWORD r=0;
EnumProcessModules( ph, &mh, sizeof(mh), &r );

char buf[MAX_PATH] = {0};
if( GetModuleBaseName(ph, mh, buf, sizeof(buf)) )
  result = std::string(buf);


434 名前:デフォルトの名無しさん :2006/07/22(土) 12:15:36
LRESULT と HRESULTの違いってなに?
ほかにもあるの?


435 名前:デフォルトの名無しさん :2006/07/22(土) 12:28:13
>>433
稼動中のプロセスのフルパス名を取得したいのであれば、
PSAPI.DLLを利用する方法もあります。

>いくつかのプロセスはOpenProcessで失敗してしまいます...
との事なので、NT系OSでの情報取得ですよね。

でしたら、PSAPI.DLLでググって見て下さい。

436 名前:デフォルトの名無しさん :2006/07/22(土) 12:29:04
>>434
HRESULTはビット毎に意味があるからよく読め
ttp://msdn.microsoft.com/library/en-us/com/html/15f3ae3e-1794-4948-a7aa-6309a703364b.asp
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/winprog/winprog/windows_data_types.asp

437 名前:デフォルトの名無しさん :2006/07/22(土) 12:54:26
>>436
ありがとう。まさにばっちしのアンサー

438 名前:433 :2006/07/22(土) 13:09:11
>>435
環境書き忘れてました. すいません Windows XP Home Edition SP2です

ttp://support.microsoft.com/default.aspx?scid=kb;ja;JP175030
PSAPI.DLLを利用する方法というのは
上記URLの「PSAPI ライブラリを使用したプロセスの列挙」 (ソースコード中では// If Windows NT 4.0以降
のことだと思われますが
hInstLib = LoadLibraryA("PSAPI.DLL");
...
lpfEnumProcesses = (BOOL (WINAPI *)(DWORD *, DWORD, DWORD*))GetProcAddress(hInstLib, "EnumProcesses");
...
lpfEnumProcesses(lpdwPIDs, dwSize2, &dwSize)
hProcess = OpenProcess( PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, lpdwPIDs[dwIndex]);
と結局OpenProcessを呼んでしまっているので失敗すると思われます
違ってたらすいません


439 名前:デフォルトの名無しさん :2006/07/22(土) 13:30:56
>>438
アクセス拒否を回避する場合は、
LookupPrivilegeValueとAdjustTokenPrivilegesで特権を付与する。
但し、OSのアクセス権の変更可の設定に依存したと思う。

440 名前:433 :2006/07/22(土) 14:05:37
>>439
できました. ありがとうございます
ttp://support.microsoft.com/default.aspx?scid=kb;ja;131065

441 名前:デフォルトの名無しさん :2006/07/22(土) 20:35:20
質問なのですが
・cygwin環境
・g++
でプログラムを作っているのですが
この度boostのregexを使おうかと思い
入れてはみたのですが。
APIプログラムじゃないソースでは動くのですが。
APIプログラムでコンパイルしたところ(コンパイルはできます
実行し、regexの部分に差し掛かったときに(boost::regex
プログラムが停止してしまいます。(問題が発生しましたと・・・
解決方法ありますでしょうかorz

442 名前:デフォルトの名無しさん :2006/07/22(土) 21:40:17
>>441
単にお前のプログラムにバグがあるだけだろ。

443 名前:441 :2006/07/22(土) 22:20:24
regex regex("<[^>]+>");
この一行だけで 動いてたプログラムが止まりってしまいます。
コンパイルでエラーはでてません。

444 名前:デフォルトの名無しさん :2006/07/22(土) 23:23:19
NTFSのディレクトリにセキュリティ設定についてです。

やりたいことは、C:\hogehoge ディレクトリとその中の全てのファイル・サブ
ディレクトリに、Everyoneのフルコントロールのアクセス許可を追加することです。

Explorerで、C:\hogehoge のプロパティーのセキュリティタブ・詳細設定で
適用先=[このフォルダ、サブフォルダおよびファイル]のEveryoneのフルコン
トロールを追加すると、C:\hogehogeの中の全てのファイル・サブディレクトリ
にも継承元がC:\hogehogeとしてEveryone/フルコントロールが追加されます。
(これと同じことをプログラムでやりたい)

元としているプログラムは、
http://support.microsoft.com/kb/102102
で、Step14のAddAccessAllowedAce()のところをAddAccessAllowedAceEx( ...
OBJECT_INHERIT_ACE|CONTAINER_INHERIT_ACE,...) に変えています。
これで、C:\hogehoge 自身のセキュリティーは目的通りにEveryone/フルコント
ロールが追加されるのですが、中のファイル・サブディレクトリにはC:\hogehoge
から継承したEveryone/フルコントロールが追加されません。(元のまま)

中のファイル・サブディレクトリに継承するには、C:\hogehoge へのセキュ
リティ追加時に、OBJECT_INHERIT_ACE|CONTAINER_INHERIT_ACE を追加する以
外にやらなければならないことがあるのでしょうか?
あるいは、中のファイル・サブディレクトリ全てに対して、自前で
AddAccessAllowedAceEx( ...,INHERITED_ACE,... )のアクセス制御エントリを
追加しなければならないのでしょうか?



445 名前:デフォルトの名無しさん :2006/07/23(日) 00:39:05
>>441
boostスレで聞きなさい。

446 名前:441 :2006/07/23(日) 01:28:23
お騒がせしました。
cygwinのg++でコンパイル時に
no-cygwinオプションのせいでした。

447 名前:デフォルトの名無しさん :2006/07/23(日) 12:13:21
現在の実行ファイルのアドレスを取得する方法を教えてください。
おねがいしまス。

448 名前:デフォルトの名無しさん :2006/07/23(日) 12:34:34
>>447
GetModuleFileName

この質問多いな。
つーか「アドレス」ってなんだよw

449 名前:デフォルトの名無しさん :2006/07/23(日) 12:37:25
リモートのを実行してるのかもしれん

450 名前:デフォルトの名無しさん :2006/07/23(日) 12:45:52
モジュールがロードされてるアドレスが知りたいんじゃないの?

>>447
つ GetModuleHandle

451 名前:デフォルトの名無しさん :2006/07/23(日) 17:35:20
×ロードされてる
○マップされてる

452 名前:デフォルトの名無しさん :2006/07/23(日) 18:47:51
__ImageBase

453 名前:デフォルトの名無しさん :2006/07/23(日) 18:52:52
そうじゃないです

454 名前:444 :2006/07/23(日) 21:35:16
自己解決しました。

SetFileSecurity()でなく、SetNamedSecurityInfo()を使えば、既存の設定を残しての追加や
中のファイル・サブディレクトリへの継承が簡単にできました。


455 名前:デフォルトの名無しさん :2006/07/23(日) 23:36:28
WM_ERASEBKGNDメッセージなどでwParamに入っているデバイスコンテキストハンドルは
どういった筋のものでせうか
これ使ったときも削除or解放しなくてもよろしい?

456 名前:デフォルトの名無しさん :2006/07/23(日) 23:53:15
>>455
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/resources/icons/iconreference/iconmessages/wm_erasebkgnd.asp
解放しろとは書いてないので、解放しなくていい。

457 名前:デフォルトの名無しさん :2006/07/23(日) 23:55:06
タブコントロールをSetWindowLongでサブクラス化したんですが
どうもセットしたプロシージャーにメッセージが入ってないみたいなんですよ(↓で確認)
switch(msg)
{
MessageBeep(-1);
これって何が原因なんですかね?エロイ人おせーてorz

458 名前:デフォルトの名無しさん :2006/07/24(月) 00:17:35
言語の基本からやり直せ

459 名前:デフォルトの名無しさん :2006/07/24(月) 00:37:07
>>457
よくわからん。
case :WM_NULLが来たって事か?

460 名前:デフォルトの名無しさん :2006/07/24(月) 00:49:22
いやはやお恥ずかしい
書く場所間違えてたorz
>>458-459
おかげ様で解決できました、ありがとう

461 名前:デフォルトの名無しさん :2006/07/24(月) 02:47:58
すいません、platform SDKを探していたのですが、>>1
Server 2003 SP1 Platform SDK Full Downloadしか結局見つからなかったのですが、
あたまにserver 2003って書いてるんですけど、これでいいんでしょうか?
当方XPです。

今後はPlatformSDKではなくFrameworkSDKで開発しろって事なんでしょうか??
見当違いな事を言ってたらすいません。

462 名前:デフォルトの名無しさん :2006/07/24(月) 03:10:57
>>461
Server 2003 SP1まで対応してるって話で、XPでも問題ない。
が、それで良いかは知らん。

VC++6.0だったら、February 2003使うべきだし。
VC++2005でDirectShowのBaseClassesをビルドしたい場合は、
最新のWindows Server 2003 R2 Platform SDKのを使う必要あったりするし。

463 名前:デフォルトの名無しさん :2006/07/24(月) 03:22:55
>>462
2003server「に」対応してるという意味ではなく、2003server「まで」っていうことなんですね
勘違いしていました。。
>DirectShowのBaseClasses
というのを今後使うかはわからないのでとりあえず
Server 2003 SP1 Platform SDK
をインストールして、必要に応じてR2のほうも入れてみます。
ありがとうございました

464 名前:デフォルトの名無しさん :2006/07/24(月) 12:09:26
SDKでプログラムを書いてるんですが、
FindFirstFileやFindNextFileで"."と".."を拾ってくるのは使用なんですか?

C:\やD:\について用いるとそんなことないんですが。

465 名前:デフォルトの名無しさん :2006/07/24(月) 12:16:31
"."はカレントディレクトリ
".."は親ディレクトリ
存在するものを拾ってるって事です。

466 名前:デフォルトの名無しさん :2006/07/24(月) 12:18:07
FATの頃からの仕様なんじゃないか?
root 以外のディレクトリには . と .. は実在するテーブル情報だし

467 名前:デフォルトの名無しさん :2006/07/24(月) 12:26:23
>>465-466
ありがとうございます。よくわかりました。

468 名前:デフォルトの名無しさん :2006/07/24(月) 14:48:34
ウインドウにくっついてるルートメニューにオーナードローする方法を
教えてください。普通にやっても出来ません…

469 名前:デフォルトの名無しさん :2006/07/24(月) 16:19:06
普通にできるが、君の言う普通が分からないのでなんとも。
ttp://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/resources/menus/usingmenus.asp?frame=true#_win32_Creating_Owner_Drawn_Menu_Items

470 名前:デフォルトの名無しさん :2006/07/24(月) 17:12:51
>>469
お答えどうも有難うございます。

リンク先に書いてあるオーナードローのためのWM_MEASUREITEMや
WM_DRAWITEMはルートメニューに対しては飛んで来ないようです。

ルートメニューというのはウインドウのタイトルバーの下について
いる横長のメニューバーのつもりで書きました。他に言い方が分
らないので…。

やりたいことは、ルートメニューバーにビットマップで絵を
貼り付けたいのです。どこか勘違いしていますでしょうか? 

よろしくお願い致します。

471 名前:デフォルトの名無しさん :2006/07/24(月) 18:14:27
とりあえずどうやっているか大まかに書いてくれ。
MFC使ってるかどうかも。
今のままだとプログラムが間違ってるとしか答えられん。

472 名前:デフォルトの名無しさん :2006/07/24(月) 18:27:27
>>471
済みません。勘違いしてました。

プログラムを見直したところ、メッセージが飛んできたようです。
お騒がせしました。プログラムはWin32APIのみです。

有難うございました。

473 名前:デフォルトの名無しさん :2006/07/24(月) 20:00:17
>>470
ビットマップを貼り付けたいだけならオーナードローする必要は無いぞ。
http://www.kumei.ne.jp/c_lang/sdk/sdk_42.htm

474 名前:472 :2006/07/24(月) 20:06:38
たびたび済みません。メニューのオーナードローをやっています。

OSはXPなんですが、画面のプロパティ→デザイン→詳細設定
の、メニューで使われるフォントの名前やフォントサイズを
ユーザーの設定にそって反映させたいと考えています。

その辺を取得するにはどうしたらいいでしょうか?

SystemParametersInfo かとも思ったのですが、
ちょっとパラメータの詳細が分りませんでした。
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpsysinf/html/_win32_systemparametersinfo.asp
この辺には欲しいパラメータ内容が見当たりません。
見落としていますでしょうか?

よろしくお願い致します。


475 名前:472 :2006/07/24(月) 20:08:38
>>473
返事有難うございます。単に貼り付ける用途のフラグでは機能的に
ちょっと足りないと思いました。なのでオーナードローしています。

476 名前:デフォルトの名無しさん :2006/07/24(月) 22:37:41
>>466
FATには実在するけどNTFSではntfs.sysがでっち上げてる。
たぶん"."と".."は存在するに決まってると決めつけているプログラムを
混乱させないため

477 名前:デフォルトの名無しさん :2006/07/24(月) 22:46:10
>>476
素朴な疑問だけど、cygwinで表示されるiNodeNoとリンク数も実態を表していないと言うこと?
少なくとも見かけ上はリンクに見えるのだけど。

478 名前:デフォルトの名無しさん :2006/07/24(月) 23:37:05
>>472
SPI_GETNONCLIENTMETRICSで

479 名前:デフォルトの名無しさん :2006/07/25(火) 00:16:58
この前も言ったけどウェブ上のMSDNのAPIリファレンスが見れねえ!
同じ症状の人いねえ?

480 名前:デフォルトの名無しさん :2006/07/25(火) 00:17:41
>>479
日本語版?英語版?

481 名前:デフォルトの名無しさん :2006/07/25(火) 00:18:15
>>480
お早い返事どうも
両方!

482 名前:デフォルトの名無しさん :2006/07/25(火) 00:44:30
窓が無いとメッセージ受け取れないうんこ仕様

483 名前:デフォルトの名無しさん :2006/07/25(火) 00:47:40
>>476
嘘つくな

484 名前:デフォルトの名無しさん :2006/07/25(火) 01:18:49
>>477
Cygwinのリンク数の表示はOSネイティブのものをさらにいじってる
ディレクトリのリンク数は中のファイル数を表すように見えるけど
実際には一切カウントされてないとか
>>483
はいはいあなた様の言うことがすべて100%完璧に正しいです
ディスクをダンプしてみた結果もntfs.sysの逆アセンブル結果もすべて幻です
これで満足しましたか

485 名前:デフォルトの名無しさん :2006/07/25(火) 03:31:44
>>482
ttp://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpwinui/html/_win32_postthreadmessage.asp

486 名前:デフォルトの名無しさん :2006/07/25(火) 04:20:07
CreateDialogでダイアログベースの窓作ったんだけど
WM_INITDIALOGじゃなくてWM_CREATEがくるのはなぜ?

487 名前:デフォルトの名無しさん :2006/07/25(火) 06:54:52
>>484
>ディスクをダンプしてみた結果もntfs.sysの逆アセンブル結果もすべて幻です
>これで満足しましたか

頭悪いなぁ。
そこが嘘だと言ってるのではなく、>>476の「たぶん」以降が嘘だと言ってるのだ。


488 名前:デフォルトの名無しさん :2006/07/25(火) 06:58:50
---dll側-------
void HogeHoge(HWND hWnd)
--------------
typedef void*(*FUNC)(HWND);

hInstdll=LoadLibrary(dllへのフルパス);
dllfunction=(FUNC)GetProcAddress(hInstdll,"HogeHoge");
dllfunction(hWnd);

たぶんFUNCの定義が間違ってるのが原因だと思うのですが、何度試行錯誤してもうまくいきません
へるぷみーorz

489 名前:デフォルトの名無しさん :2006/07/25(火) 07:26:21
typedef void (*FUNC)(HWND);

490 名前:デフォルトの名無しさん :2006/07/25(火) 08:13:26
SetTimer()でTIMERPROCを指定する時、コールバック関数はstaticにしないと
いけませんよね?(理由はわからないのですが)
そうすると、コールバック関数の中からコールバック関数の属するメンバに
アクセスするにはメンバもstaticにしないとコンパイルが通りませんが、
それでは複数のインスタンスを生成して同時処理をする場合に各インスタンスに
別々の設定を渡すことが出来なくなります。
VC++なのでCWnd::OnTimer()という方法もありますが重くなりそうなので、
自作クラスで何とかしたいのですが何か良い方法はあるでしょうか?
マルチスレッドならスレッドごとに独立して利用できるのかな?

491 名前:デフォルトの名無しさん :2006/07/25(火) 08:17:34
>>490
API云々の前にC++を勉強しなおせ。

492 名前:デフォルトの名無しさん :2006/07/25(火) 08:21:01
>>490

>SetTimer()でTIMERPROCを指定する時、コールバック関数はstaticにしないと
>いけませんよね?(理由はわからないのですが)

C++ならそう

Cならそんなことはない


493 名前:デフォルトの名無しさん :2006/07/25(火) 08:21:43
シングルトンクラスにしとけ

494 名前:デフォルトの名無しさん :2006/07/25(火) 08:22:52
>>491
具体的にはどの辺をやり直せば良いでしょうか?

495 名前:デフォルトの名無しさん :2006/07/25(火) 08:27:22
>>493
シングルトンだと1個しか実体がないので複数のインスタンスで
別々の設定のタイマー処理ができないように思うのですが、
シングルトンでマルチスレッドならうまくいくのかな?

>>492
C++だけなんですか・・・なんでだー orz
この辺調べたほうがいいのかな?

496 名前:デフォルトの名無しさん :2006/07/25(火) 08:27:44
マルチスレッドにした方が楽になると思う

497 名前:デフォルトの名無しさん :2006/07/25(火) 08:54:01
http://www.codeproject.com/cpp/SetTimer__non-static.asp

>>492さんのご指摘を受けて検索キーワードに「C++」を加えたら
こんなのが見つかりました。
これもシングルトンもどきしてるし、マルチスレッドにするほうがいいのか・・・
マルチスレッドのオーバヘッドも気になったんですけど試してみます。
>>492-496 ありがとうございました。

498 名前:366 :2006/07/25(火) 08:59:04
TimerProcっておまけの引数がないんだね。
グローバルにIDとオブジェクトを対応付けさせるしかないと思う。
と書こうとしたら、IDが使えると思いついた。このIDはUINT_PTR型だから大きさも問題ない。

class Hoge
{
public:
  UINT_PTR SetTimer(HWND hwnd, UINT elapse)
  {
    return SetTimer(hwnd, reinterpret_cast<UINT_PTR>(this), elapse, TimerEntry);
  }
private:
  void TimerProc(HWND hwnd, UINT msg, UINT_PTR id, DWORD time);

  static void CALLBACK TimerEntry(HWND hwnd, UINT msg, UINT_PTR id, DWORD time)
  {
    reinterpret_cast<Hoge*>(id)->TimerProc(hwnd, msg, id, time);
  }
  static std::map<UINT_PTR, Hoge*> TimerProcMap;
};

499 名前:デフォルトの名無しさん :2006/07/25(火) 08:59:41
ああ名前の366は間違いだ、すまん。

500 名前:デフォルトの名無しさん :2006/07/25(火) 09:00:25
TimerProcMapも不要だ。


■過去ログ置き場に戻る■ 1- 前250 次250 最新50
DAT2HTML 0.33f Converted.