■過去ログ置き場に戻る■
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.