.NET Framework!? 知らんな!!
そんなヤル気のあるネィティブプログラマ集まれ!
スレ立てるまでもない、Win32APIについての質問はこちらへどうぞ。
やさしい お兄ちゃん 達が答えてくれるかも。
でも、質問する前に検索ぐらい汁!!
過去スレ・参考は
>>2 ぐらい...
あぼーん
もつかれ
6 :
デフォルトの名無しさん :03/07/30 18:08
>>1 乙
早速だけど、質問。
コントロールパネル → マウス → ポインタとたどっていくと、
表示可能なシステムカーソル一覧が表示されるけど、
その中の 「手書き」とかかれているカーソルをシステムカーソルとして
呼び出すことは可能ですか?
SetCursor( LoadCursor( 0, IDC_WAIT ) );
のように呼び出したいのですが。
>>6 勘と試行錯誤の結果IDは32631らしい。
LoadCusor(0, MAKEINTRESOURCE(32631))
しかし32631や7F77で検索してもドキュメントが見つからない。
使用は控えるべきかも。
APIでいいのかなぁ。適切なスレがあったら誘導お願いします。 仮想リストコントロール(オーナーデータ)なるものに手を出してみたんですが、 LVN_GETDISPINFOでテキストを返す正しい方法がわからないでつ。 LPNMLVDISPINFOのitem.pszTextに指定するというのは分かるんですが、 文字列へのポインタを指定するのか、こいつにコピーしていいのかが分からないのです。 なんでこんなところで詰まってるかというと…… MSDNの仮想リストコントロールのページ(日本語)のサンプルコードはlstrcpyしてる。 一方、MSDNからDirlv.exeっつーサンプルを落としてみると、 staticなバッファのポインタを渡している。 という実体でして。どっちが正しいんですか?(つД`) 間違ったらかなり痛い事態を引き起こしそうだよ……
sageてるし…… 解には辿り着いてないんですが、少し見えてきました。 item.cchTextMaxを覗いてみると260, 264, 1024の3種類が入ってくるようです。 列挙時に260、マウスでポイントすると264と1024という感じ。 pszTextの方もその3種類毎に固定のアドレスが入ってる模様。 これはバッファが用意されてると考えてよいのでしょうか。 となると別のアドレスを突っ込むと勝手に解放されたりする危険が ありそうなんですが、用意されているバッファが固定なところから察するに 逐一確保/解放してるわけではなさそうなので大丈夫なのかな。
>>9 MSDNの説明だと、どっちでもいいみたいだね。
ただ、ポインタを突っ込む場合は、その項目が削除されるまで
文字列を解放したり中身を変更しちゃいけないと。
>>8 penwin.hに入ってるIDC_PENってのがそれっぽい。
>>11 むぅ、どっちでもいいんですか。
とりあえずlstrcpynする方向で進めてみます。
俺はアイテムのlparamにnewした文字列へのポインタを入れといて、 そのポインタを突っ込んでる。
LVM_INSERTITEMで自分で設定したのがコピーされるのではないのか?
>>13-14 LVS_OWNERDATAなので、LVM_INSERTITEMとかはしないです。
16 :
デフォルトの名無しさん :03/07/30 23:03
外部アプリのメニューを操作するプログラムを作りたいのですが、 どうすればいいでしょうか? 具体的には「既に起動しているプログラムをひとつ選んで ファイル(F)→開く(O)を実行する」みたいなことができるプログラムです。 keybd_event以外で作りたいのですが、いい方法があったら教えてください。 お願いします。
17 :
名無し@沢村 :03/07/30 23:08
学校のおじさんのつくったWin32APIでプログラミングしている、へたれたちのいるスレはここですか?
WM_COMMANDでもポストすれば?
Win32 APIじゃ無いかもしれませんが 以下のソースがコンパイルできないのはなぜなのでしょうか? struct S_STR { const int i; } g_i[] ={ 1,2, }; // エラー error C2440: 'initializing' : 'const int' から 'struct S_STR' に変換することはできません。(新しい動作 ; ヘルプを参照) コンストラクタはソース型を持てません、またはコンストラクタのオーバーロード レゾリューションがあいまいです。 環境 DEV VC++6.0 OS Windows2000 C++ソース
もうチョット判りやすくしました. (違うものになってる気が...) struct S_STR { const int i; const int j; } g_ij[] ={ {1,1}, {2,2} }; //エラー error C2440: 'initializing' : 'const int' から 'struct S_STR' に変換することはできません。(新しい動作 ; ヘルプを参照) コンストラクタはソース型を持てません、またはコンストラクタのオーバーロード レゾリューションがあいまいです。
思い切りスレ違いじゃないですか。何考えてんですか。
いいですよ、コンパイルしてください。勘違いソースを。それで満足したら帰って下さい。
C++の入門書を30回ぐらい読み直せ。
>>8 ,
>>11 出来ました。Thanks!
確かに penwin.h に IDC_PEN で定義されていますね。
でも英語版のMSDNにも書いてないうえに、penwin.h が PlatformSDK に無い
ところを見ると、あまり推奨されていないんでしょうか…
>>1 .NETもWin32も両方やっているのですが、出入りしてもいいですか?
.NETの質問をしなければ許す
>>26 前スレの1をコピペしただけだから、
あまり深く気にしないでくれ
>>27 回答ばかりしているので、たぶん質問はしないと思います。
すみません、NETって南下の略なんですか?
日本教育テレビ。 今のテレビ朝日のことだよ。
33 :
デフォルトの名無しさん :03/08/01 18:04
コマンドプロンプトからWin32アプリケーションを起動して 起動もとのコマンドプロンプトに文字を出力するにはどうすればいいのですか?
勉強に何か作ってみようと思ってるんですけど いろんなことを含んでて、勉強で作る定番みたいなプログラムってないですかね?
Win32APIを使用した数当てゲーム
永
hello world
>>36 C:\windows\System32\calc.exe
C:\windows\System32\mspaint.exe
どちらもサブセットでいい
「それっぽいの」作ってみそ
フルパスなのがいやらしい
(^^)
>>41 %windir%\system32\calc.exe
%windir%\system32\mspaint.exe
>>43 サービスから何か出力したいならイベントログを使うのが定番
デバッグ目的ならOutputDebugString
>>46 > サービスから何か出力したいならイベントログを使うのが定番
はぁ ?
普通にファイルに吐いときゃいいと思うが。
イベントログはあくまでもイベントを記録するもんだから、処理結果なんか吐いてどうするつもりだ ?
48 :
デフォルトの名無しさん :03/08/03 04:03
質問の仕方が不味かったかな
つまり、
@コンソール上から起動した時はそのコンソール上に文字を出力したい
Aエクスプローラーなどから直接起動した時はコンソールを作りたくない
というようなことをやりたいんです
>>34 AllocConsole 使うとコンソールが強制的にできてしまって
そこには文字を出力出来るけど起動もとのコマンドプロンプトに
文字を出力できません
>>35 コンソールアプリケーションにするとコンソール以外から起動した時に
コンソールができてしまいます
説明へたですみません
>48 不可能。 Subsystem:consoleと、Subsystem:windowsの 動作の違いは何によるものか考えれ。 それぞれ、スタートアップルーチン以前に、 起動元/subsys console windows console なにもしない コンソールからデタッチ windows AllocConsole なにもしない という動作が、Windowsによって行われる。
>>50 よくわかりました。ありがとうございます。
XP以降なら AttachConsole(ATTACH_PARENT_CONSOLE) できるかも(未確認)
54 :
デフォルトの名無しさん :03/08/03 15:11
アプリケーションが終了する前にファイルに書き込む方法を教えて下さい。 以下の関数をWM_CREATEやWM_TIMERの所に置いた場合上手く書き込めるのですが、 WM_DESTROY,WM_QUITの所に置いた場合何故か上手くいかないのです。 void func(){ HANDLE hf;char str[]="てすと";DWORD WriteByte; hf=CreateFile("a,dat",(省略)); SetFilePointer(hf,0,NULL,FILE_END); WriteFile(hf,(LPVOID)&str, (lstrlen(str)+1)*sizeof(char), &WriteByte, NULL); CloseHandle(hf); }
WM_QUITはそれを見てメッセージループの終了を判定するためのものだから ウィンドウプロシージャにcase WM_QUITとか書いても一生飛んでこないぞ
windows ってコンソールもウィンドウも一緒くたになってるんだな unix にみたいになってる訳じゃないのね
>>56 ×windows ってコンソールもウィンドウも一緒くたになってるんだな
○windows ってコンソールもターミナルも一緒くたになってるんだな
WM_DESTROYなら、PostQuitMessageの前に呼べばうまくいくはず。
59 :
デフォルトの名無しさん :03/08/03 17:38
>58 上手くいきませんでした・・・
DestroyWindowしていない悪寒
61 :
デフォルトの名無しさん :03/08/03 17:58
>60 その通りでした 有難うございます
62 :
デフォルトの名無しさん :03/08/03 18:01
STATICコントロールとかのフォントって変更できますか? HFONT font=〜; HWND HwndStatic; SetFont(HwndStatic,font); こんなメソッド一発でそれ以降ずっとそのフォントで描画されつづける関数はないのでしょうか。 サブクラス化してWM_Paintをオーバーロードしないとダメですか?
>>63 WM_SETFONT送れ。
フォントは親ウィンドウのWM_CREATEで作って、
WM_DESTROYで消すのがオススメ。
>>64 できました。どうもありがとうございました。
Win32APIではなかったかもしれないんですが キーボード入力を簡単にエミュレートする関数を教えてください 確か1行でキー入力をエミュレート出来たんですけど 忘れてしまったんです お尻でしたら教えてください
keybd_event()
FindWindowで他のアプリのハンドルをゲットしたんですけど hwnd = FindWindow("CAPP",NULL); if( hwnd =! NULL) { ← この処理 この後hwndの値が変わってしまうんですけど何ででしょうか?
>>all 何でDelphiつかわないの??
>>70 ネタじゃなくって本当に間違えました
ビックリマークは反対に付けるんですね
>>71 さん ありがとう
ほんのりワロタ
76 :
デフォルトの名無しさん :03/08/05 03:47
77 :
デフォルトの名無しさん :03/08/05 03:48
仮想キーコードに付いて教えてください _ ← このキーは VK_ 何でしょう? 16進数でも良いので教えてください 106日本語キーボード使ってます
VK_OEM_102 = 0xE2;
82 :
デフォルトの名無しさん :03/08/05 13:52
ウィンドウズのスタートメニューがあるバー、タスクバーって言うのでしょうか? これの位置と幅を取得する方法を教えて下さい。
83 :
デフォルトの名無しさん :03/08/05 14:18
>>82 正式じゃないと思うけど、調べるのも面倒なので
GetWindowRect(FindWindow('Shell_TrayWnd', nil), l_rcTaskbar);
で取得してる。
正式にはこれかな SHAppBarMessage(ABM_GETTASKBARPOS, pabd);
スタートメニュー呼び出す方法教えて って、あれってメニューなのカナ?
keybd_eventでウィンドウズキーを送る
>>86-87 それだと、キーコードを送るだけですよね?
スタートメニューを任意の位置に表示するには、
Windowsキーコード送った後に、スタートメニューウィンドウが
生成されるのを待って、SetWindowPos とかでいいんでしょうか?
>>88 SHAppBarMessageで任意の場所に移動してからキーコード送るとか
>>88 なんでそんなわけのわからんことをしたいのか素朴な疑問
>>90 そんなわけのわからんことの出来るツールが一時期出回ってたような。
デスクトップの任意の場所をダブルクリックでスタートメニューを表示、とか。
http://www.kumei.ne.jp/c_lang/sdk2/sdk_127.htm のサンプルを VS2003 で作っているのですが、コンパイルが
127 error LNK2019: 未解決の外部シンボル __imp__InitCommonControlsEx@4 が関数 _WinMainN@16 で参照されました。
とでてとまってしまいます。
#pragma comment(lib, "ScrnSave.Lib")もいれているのに・・・
ちなみにVC6だと問題なくコンパイルできてしまいます。いったいどこを
ちぇっくすればいいでしょう・・・?
>>92 MSDNライブラリで、
「InitCommonControlsEx」に必要なインポートライブラリを調べて、
そのライブラリをプロジェクトに追加する
>>92 それって最新のSDK使ったときも同じエラーが出るんだよね
壁紙の部分に描画をしたいのですが良い方法ご存知ないですか? GetDesktopWindow()を使ってやってみたんですがデスクトップ上の アイコンやウィンドウの上にも描画されてしまいます。
>>95 壁紙に直接描いて、壁紙入れ替えればいいんでない?
壁紙にカレンダー描画する奴とかそんな感じだよ。
>>95 デスクトップのリストビューをフックして、WM_ERASEBKGNDで……ダメかな
なんかGUIガリガリ作っていくうちに HSPみたいになっていくのは俺だけ?
その形容が伝わらん
>>96 >>97 レス有難う御座いました。
レスを参考にしてデスクトップのリストビューをフックして
サブクラス化してWM_ERASEBKGNDのとこで描画したら
出来ました。助かりました。
101 :
デフォルトの名無しさん :03/08/08 18:25
>>98 簡単なツールならHSPが便利だよな〜
サクっと作れる
嘘だ。
_beginthread でクラスのメンバ関数を呼ぼうとするとコンパイルが通らないんだけど、 とタバコ屋のおばあさんに言われたんですけどわかりません。 _beginthread(void,int,int)' に一致するものが見つからない と言われるんだそうです。コンパイラは BCC 5.5 です。 どなたかお分かりになるでしょうか。
104 :
デフォルトの名無しさん :03/08/08 19:19
ネタ無視
_beginthreadは*WIN32APIじゃない*ので該当の処理系のスレへ。
そう。ここやったら、CreateThreadとかやな。
101だがHSPの話は本当 簡単なツールやスクリーンセーバーとかはHSPが楽 今やDirectXによる3Dネット対戦ゲーすら作れるからね APIを使うときは微妙に面倒だったり プログラムファイルサイズがでかい 実行速度が遅い など問題もあるが
>>107 その辺のバランスがけっこう取れているのがVCL(特にDelphi)なんだよね。
CreateWindowで(HMENU)の欄に0を入れるとVC上からはウインドウは作られますが、 エクスプローラーからはウインドウは作られません。NULLだと作れます。 仕様ですか? 原因が解ったけど、いまいち納得(理解)出来ないです…
アクセラレータキーの設定についてです。 LoadAccelerators は問題ないのですが、アクセラレータキーを押して TranslateAccelerator で WM_COMMAND にいった時に wParam の値が 40001 になるはずが 10557 なんです。 そのためにswitch文を何もせずに一気に抜けてしまうんですよ・・・(涙) どこがおかしいのかさっぱりワケワカメっす。 何かしらの指南をお願いします。
112 :
デフォルトの名無しさん :03/08/09 00:26
おっとぅっ、あげるっす。
>>111 10557じゃなくて105537(=0x19C41)っしょ。
wNotifyCode = HIWORD(wParam);
wID = LOWORD(wParam);
wNotifyCodeはアクセラレータの時1になります。
>>110 ふーん
WM_CREATEで
GetMenu() <ぬるぽ
return ガッ
みたいなことになってるのかな?
116 :
デフォルトの名無しさん :03/08/09 09:58
>>115 ここにNULLと0の違いが書いてあんの?
別に引数のhMenuにNULL入れようが、0を入れようが、 動作が変わるとは思えないし、試しても変わらないんだが・・・ どんな環境でやってんだろ・・・
118 :
デフォルトの名無しさん :03/08/09 11:13
>>117 どっかじぶんのヘッダで#defineし直してるとか?
>>113 確かに 10557->105537 です。
ありがとうございます
LOWORDしてなかっただけなんですね。
恥ずかしい。もっと勉強しないと・・・
120 :
デフォルトの名無しさん :03/08/09 13:16
EnumDisplaySettingsで得られる画面モードが 画面のプロパティで選択できるものよりも少ないのですが どうすれば全ての設定を列挙できるのでしょうか?
hmenuが初期化されていないようだが、、、
hmenuは初期化は必要ですか? とりあえず0が入っているみたいなのですが?
いずれにせよ、ふつうにWindowsは出てきたわけだが。(W2Ksp4)
Windowsか
2つ起動させば2つ出てくるしね。
> hmenuは初期化は必要ですか? 必要。 > とりあえず0が入っているみたいなのですが? たまたま偶然運良く0が入ってるのを見ていつもそうだと 思う馬鹿はC/C++使うな。
128 :
デフォルトの名無しさん :03/08/10 04:34
・あるパスの親ディレクトリの取得方法 ・あるパスがファイルかどうかの判断 ・ファイルでそれがリンクだった場合参照先パスの取得方法 をそれぞれどうやってやるのか教えてください。 できればCOMは使いたくないです。。。
>>128 ちっとはググれよ。
> ・あるパスの親ディレクトリの取得方法
".."
> ・あるパスがファイルかどうかの判断
GetFileAttributes
> ・ファイルでそれがリンクだった場合参照先パスの取得方法
はぁ? リンク? ショートカットの間違いじゃねーの?
WindowsCEならCOM使わずに(少なくとも表面的には)できるAPIがあるが。
130=ショートカットの拡張子が.lnk=linkなことを知らないやつ
リンクというとちょっと違うような・・・
ハードリンクはNTFSに限り許されているが。
>たまたま偶然運良く0が入ってるのを見ていつもそうだと >思う馬鹿はC/C++使うな。 馬鹿です。 VC上では0が入り、エクスプローラーからは783647430が入るみたいです。
参照先パスの取得方法や「リンク」と「ショートカット」の違いを知らないくせして トンチンカンなこと言ってる知ったか厨が紛れ込んでいるな。 まぁ、仕方がないか。今は夏休みだからな。
137 :
デフォルトの名無しさん :03/08/10 13:34
>>128 COMはイヤ、ってSH_*系もダメなの?
コンソールを表示しないようにして batファイルを実行してその戻り値を利用したいのですが、 system関数のコンソールを表示しない版の関数を教えて下さい。
>>138 CreateProcess API の何番目かの引数に何かしら設定すればよいはず。
>>139 漏れ、昔それを色々と試したけど、結局ダメだった。
どうやっても、起動直後に一瞬だけ表示されてしまうのは防げなかった。
漏れのやり方がヘボかったのかも知れんが...。
>>140 CREATE_NO_WINDOW で問題ないはずだけど?
あ、Win9xだとダメだが。
SetStdHandleで標準出力を匿名パイプかなんかにすればいい気がするが、 手元にWin9xがないので検証不能だな。
>>139-142 報告遅れましてすいません。MSDNで
CreateProcessについて調べて、exeファイルだと
コンソールを表示せずに実行することができるようになったみたいですが、
(WinXP Home)batファイルでは、実行自体がされません。
CreateProcessは非0を返しているのですが・・・
↓が試したソースです。間違えていれば教えてください。
↑試したソース(馬鹿には見えない)
>>143 CreateProcessのコマンドラインに
cmd /c <batファイル名>
を渡してる? CreateProcessはそこまで面倒見てくれなかったはず
>>144 もうちょっと落ち着いて〜っでヽ(`Д´)ノ ウワァァァン
第2引数を NULL にして 第1引数を "Cmd /c test.bat" にしてみてはどうじゃろ?
>>147 試してみました。…が、プロセス自体が起動できないようです。
(CreateProcessが0を返します。)
ハンドルリークやGDIリソースリーク個所を特定できる方法ってありませんか? タスクマネージャで「ハンドル」や「GDIオブジェクト」を観察することで、検出は できるみたい(増えつづけてるからリークしてるな、と)ですが...
Win32API氏ね、時代は.NETFramework様んだよ!
151 :
デフォルトの名無しさん :03/08/11 16:49
すみません、MFC/SDKどちらでも、 他のアプリケーションが起動する直前にそれを検出する方法はないでしょうか。 特定のアプリケーションの起動を一時的に抑止させるようなことがしたいです。 監視するアプリケーションはユーザーがウインドウなどでダブルクリックで 起動した物だけで結構ですが、何かいい方法はないでしょうか?
>>150 だったら.NETFrameworkスレ立ててよ
ニヤニヤ
>>151 CreateProcessをフックするとか。
155 :
デフォルトの名無しさん :03/08/11 20:11
>>154 他アプリのAPI関数の呼び出しをフックすることが出来るとでも??
>>149 使ったことないけどGetGuiResourcesなんてどうよ?
>>155-156 ってゆーかNorton Anti VirusはWin9x/MEでは正にそういうことやってるらしい。
EDITBOXの背景にBITMAPを貼るにはどうしたらいいですか?
161 :
デフォルトの名無しさん :03/08/11 23:56
>>156 全く情報が見つからないんですが
やっぱり荒技?
>>161 「Advanced Windows」でも買えばええんやなかろうか
164 :
デフォルトの名無しさん :03/08/12 00:10
>>163 Windows2000AdvancedServerのこと?
すいません質問です コマンドで ftp -s:ftpcmd.txt>>ftplog.txt とやっているのと同じことをプログラムから動作させたいのですがうまくいきません ちなみにftpcmd.txtの内容は open ****** <--サーバアドレス ******* <--ユーザー名 ******** <--パスワード ascii put ****** <--アップするファイル bye です プログラムは ShellExecute( NULL, "open", "ftp.exe", "-s:ftpcmd.txt>>ftplog.txt", NULL, SW_SHOWNORMAL); でうまくいくと思ったんですが… 戻り値は32より大きな値が帰ってきているので関数自体は成功しているようです… どなたかご教授お願いします
>>166 ヒントだけ。
リダイレクトを処理しているのは cmd.exe や command.com です。
168 :
デフォルトの名無しさん :03/08/12 03:31
%COMSPEC%
あ、リダイレクトはftp.exeの機能じゃないからあそこに記述しても意味がないですね そりゃそうだ… ご指摘ありがとうございます
>>149 あらかじめオブジェクト生成・破棄をラッピングしておいてそれ以外の生成・破棄を行わないようにしておく。
他のスレッドが作り出したウインドウがアクティブかどうかを 調べるにはどうすれば良いでしょうか? GetActiveWindow()の場合、他のアプリではだめで 自分側の一番アクティブなハンドルを返して来てしまいます 相手側のウインドウ ハンドルは、FindWindowで分かっているのですが 簡単に一番アクティブかどうか知る方法はないでしょうか?
すいません、難しくてもありましたら教えてください
>>172 いっそのこと自分でアクティブにしてしまうというのはどうか。
GetForegroundWindow ?
>>174 そうですね、その方が簡単で良いのかも知れないです
それにはGetForegroundWindow、SetForegroundWindowが良さそうなのですが
これは優先度が高いようで、アプリにかなり負担があります
出来れば負荷をかけないよう調べたいのですが
Win98/NT4.0SP3以降にはGetGUIThreadInfoとかいうのもあるが
>>177 > それにはGetForegroundWindow、SetForegroundWindowが良さそうなのですが
> これは優先度が高いようで、アプリにかなり負担があります
> 出来れば負荷をかけないよう調べたいのですが
初耳だな。どこにそんなこと書いてあった?
もしかしてこれ? >The system assigns a slightly higher priority to the thread that creates the foreground window than it does to other threads. いや、まさかね
>>179 SetActiveWindowの所にSetForegroundWindowは強制的にって
なっていたのでそう思いました
出来れば、自然にアクティブになるのを待っていたかったので
ありがとうございます、GetGUIThreadInfoは難しそうなので
GetForegroundWindowでやってみたいと思います
ダイアログのエディットコントロールを自動で 入力状態にするにはどうすれば良いでしょうか?
フォーカス・・・か?
>>184 そうです、DOSで言うとプロンプト上で点滅状態に
自動でしたいんですけど出来ますか?
187 :
デフォルトの名無しさん :03/08/12 21:59
188 :
デフォルトの名無しさん :03/08/13 02:15
矩形を描画したいのですが、例えば線幅が5のとき 線が矩形内にぴったり収まるようにしたいのですが いいAPIとかあるのでしょうか? 計算してRectangleするしかないでしょうか?
>>188 PS_INSIDEFRAMEスタイルでCreatePen()
>>188 CreatePen(PS_INSIDEFRAME
>>189-190 できますた!
いつも助けてもらって
ありがとうございます。m(__)m
193 :
デフォルトの名無しさん :03/08/13 23:10
winxp VB6
今wininetで簡単なブラウザ作ってるんですけど
hHttpRequest = HttpOpenRequest( _
hHttpSession, _
"GET", _
0, _
"HTTP/1.0", _
"
http://www.yahoo.com/ ", _
vbNullString, _
0, _
0)
でhHttpRequestがemptyだよってエラーが出ます(´・ω・`)ショボーン
どうしたらいいっすかね?
どうしようもないね。
195 :
デフォルトの名無しさん :03/08/14 00:15
>>194 そうっすか。どうしようもない質問なのかどうしようもない症状なのかどっちなんすかね?
それすらもわからないと手が出ない・・・
197 :
デフォルトの名無しさん :03/08/14 00:24
199 :
無料動画直リン :03/08/14 00:29
気を取り直して、次の方どうぞ↓
201 :
デフォルトの名無しさん :03/08/14 09:54
↑おまえがな
202 :
↑↑↑↑↑↑↑↑ :03/08/14 09:58
おまえがな
娘にオナニーみられてしまった
氏ねw
205 :
デフォルトの名無しさん :03/08/14 13:15
↑おまえがな
HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE); この後に CloseHandle(hStdOut); の必要はありますか?
その後、決して使わないのならいいんじゃない?
「決して使わない」にはprintfとかも含まれることに注意
209 :
デフォルトの名無しさん :03/08/15 12:35
質問お願いします。市販品では、子モードレスダイアログ操作中でも メインウィンドウのフォーカスは、失われないものが良くあります。 円滑な操作に必須なので、私もとりあえず、子モードレスダイアログの 操作中以外は、即座にメインウィンドウにフォーカスを移すようにしてみました。 しかし、これではメインウィンドウのタイトルが、灰色になったり元に戻ったりと 点滅してしまい、落ち着きませんでした(市販品は微動だにしません)。 綺麗に実装する方法を、教えていただければ幸いです。
アクティブウィンドウが2つになるわけないし 自分でウィンドウ描くしかないでしょ
ダイアログバーでないの
ツールウィンドウとも言う
皆さんレスありがとうございます!
>>210 大体、クラスがダイアログだったのですが、
仰るとおり、自前描画してるのもいくつかありますね。
>>211-212 まさにこれみたいです。感謝感激。ダイアログの
スタイル変えただけで簡単に実現できました…よかったよかった。
なるほど…だから市販品子ウィンドウのタイトルは、どれも後付けだったのか…。
214 :
keiko :03/08/15 13:49
例えばメモ帳のエディット コントロールを横取りしてサブクラス化かなにかして(意味不明でごめん)、秀丸みたいに改行記号とかタブ記号を表示できるようにしたいです。 そうゆうことって可能ですか? 自分でメモ帳を作るのではなくて、既存のアプリな内のコントロールに干渉したいのです。OE メール エディタとかエクセルのセル内に改行記号をひょ時させてみたいのですが・・・ ウィンドウタイトルを変えることはできたけれど・・
可能です
でも、あなたには無理。
だって、あなたは
妖怪人間♪
なにこのスレ(AA略
(⌒V⌒) │ ^ ^ │<これからも僕を応援して下さいね(^^)。 ⊂| |つ (_)(_) 山崎パン
222 :
keiko :03/08/15 15:37
言葉足らずですみません。 ヒントやサンプルなどをおしえていただけると幸いです。よろしくお願いします
GetDCして描くとか
ちょっとヒントやサンプルが貰えれば実現できるほど簡単な事では 無いと思うんだが、いかがなものか?
それでは、質問を少し変えて聞きたいのですが、 GetStdHandle()は対象のカーネルオブジェクトの 参照数を変更(1ふやす)しますか?
226 :
デフォルトの名無しさん :03/08/16 07:09
age
2ちゃんねらーなどの間で、人気のある寺院が有ります。
これらの寺院にて諸願成就を祈願しましょう。(爆)
(1-4件目)
http://www.z-shoten.or.jp/ http://www.tctv.ne.jp/matuti/ http://www5b.biglobe.ne.jp/~ryumyoin/ http://www1.ocn.ne.jp/~tatsueji/ (5件目)
--------------------------------------------------------------
寺院名 吉祥山唐泉寺
通称 江戸川不動尊
所属宗派 真言宗泉涌寺派
住所 〒133−0051
東京都江戸川区北小岩七丁目10−10
京成電鉄の小岩駅から徒歩約15分
(JR線の小岩駅は、
京成電鉄の小岩駅とはもの凄く離れているので不可。)
電話番号 03−3658−4192
住職 高田正圓
(女住職で、先代住職(高田真快)の奥さんであった模様。)
本尊 不動明王
祈祷日及び祈祷時刻
通常は毎日午前6時より(150分前後かかる模様)
行われるが、毎月28日には(不動明王縁日として)
午前11時にも(2時間ほどかかる模様)行われる。
祈祷料
(普通護摩) 3000円 5000円 10000円
(特別護摩) 30000円(21日間) 100000円(108日間)
300000円(365日間)
--------------------------------------------------------------
228 :
デフォルトの名無しさん :03/08/16 19:54
ボタンやチェックボックス、ラジオボタンなんかを押したときに出てくる、 憎々しいあの点線枠を消す方法ってありますか? 小さいコントロールとかだと、文字見えづらくなり邪魔で邪魔で ぜひともご教授を
>>228 あれがないとキーボードで操作するのに困るんだが
どうしてもと言うなら、オーナードローボタンにして何もかも自分で描く。
サブクラス化してWM_SETFOCUSを無視するという手も。
だが消さないで欲しい。理由は
>>230 と同じ。
>>230 それは面倒なのでカスタムドロー推奨。
やはり同じ理由によりフォーカス時は差別化希望。
色を変えるとか。
>>230-232 レスありがとうございます。皆さんの操作性に対する配慮には頭が下がる思いです
最初からこう訊けば良かったのですが、ペイントの左にあるような、
ツール選択のボタンみたいなのを作りたくて…
見栄えのため点線枠ではなく、ボタンのへこみのみでFocusしたかったんです
マウス主体の、簡単なグラフィックエディタなので、お見逃しを…
早速試してみようと思います、感謝です
234 :
デフォルトの名無しさん :03/08/17 03:24
ディスクの遅延書き込みを DeviceIoControlでフラッシュしたいんですけど... 9xでは Interrupt 21h Function 710Dh(Flushes file system buffers and caches) を使えばいけそうなんですが、NTでそれに相当する FSCTL_〜 は無いのでしょうか? フラッシュするにはヴォリュームのロック/アンロックを行うしかない?
>>234 NT,2k,XPは直接デバイスに触ることはできない。
外部アプリケーションが使用しているメモリの内容を書き換えたいと 思っています.市販ゲームの改造が目的です. ゲームが使用しているメモリ空間からnバイトのバイナリデータ列を 検索してヒットするすべてのアドレスを調べたいのですが, ヒープ領域でのアドレスを調べることができなくて悩んでいます. 今やってる方法は,ゲームを起動した状態でプロセスIDを取得し, それをOpenProcess()で開き,ReadProceccMemory()を使って ある程度のブロックごとに読み取り,memcmpで検索したいデータ列と 比較して下のアドレスから順番にアクセスしています. ゲームを何度起動しても下からある程度までのアドレスは毎回同じで, そこまではアクセスも順調なのですが,ある程度上に来ると アクセスできなくなり,さらにゲームもフリーズしてしまいます. プロセスメモリエディタ系で有名なExStandやねこまんま等で そのゲームのプロセスを開いてみると,ヒープ領域のアドレスが 飛び飛びで存在しており,間にアクセスできないアドレスが存在しています. 上記の方法で下から順番にアクセスしていくと,そのアドレスにどうしても 途中でぶち当たってしまいます.単ににReadProcessMemory()が失敗して 返ってくるだけなら無視してどんどんアクセスしていけばいいと思うの ですが,その時にゲームも止まってしまいます. PC環境が変わるとアドレスが変わってしまいます.環境の違いにも 対応したいので,下からデータを検索していって,アクセス不可能な 領域があれば,次にアクセスできる領域まで飛んで検索を続行する という処理を行いたいです.そのために,APIを使って 外部プロセスのヒープ領域のアドレス範囲を取得するといったことは できないでしょうか. プロセスメモリエディタなどはどういう処理をしているんでしょうか.
Heap32ListFirst
▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼
☆★ 無修正DVD★☆なら 新宿歌舞伎町直送 ☆★
人気爆発新作ベスト9入荷
堤さやか引退特集 憂木瞳 プロジェクトX No8 ベイビーフェイスをやっちまえ
白石ひより・愛葉るび SNAPSHOT 地下映像陵辱援交 すぎはら美里痴女教師
店頭販売の売れ筋のみ厳選してみました 安心の後払い
http://book-i.net/moromoro/ 白石ひとみ 小森詩 山田まり 長瀬愛
@@ 及川奈央 レジェンド @@ 堤さやか 東京バーチャル 依然大好評
サンプル画像充実 見る価値あり 最高画質
▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼
>>239 どうもです。そのページもチェック済みでした。がそのツールはソースが無いんで
すよね。惜しい。
DeviceIoControlで FSCTL_(UN)LOCK_VOLUME 使って一応できたんですが、やっぱ
これしかないのかな。
winioctl.h 眺めたら FSCTL_INVALIDATE_VOLUMEなんていう怪しいのがあったけど
どこにも情報がない(´・ω・`)
>>237 ありがとうございます
ただツールヘルプ関数はNT系OSで使えないようなのですが
その場合はどうしたらいいでしょう
>Heap32ListFirst >included in Windows XP, Windows 2000 Professional, Windows Me, Windows 98, and Windows 95 >CreateToolhelp32Snapshot >Included in Windows XP, Windows 2000 Professional, Windows Me, Windows 98, and Windows 95. MSDNもずいぶん非道い嘘を付くんだな。
XP Pro の kernel32.dll の中には Dependency Walker で見る限りは Heap32ListFirst,CreateToolhelp32Snapshot 共に入ってるんだが…
>>242-243 すいません
MSDNの対応情報には確かに書いてあるんですが
どこかのページでNT系OSでツールヘルプ関数を使うと不具合があるため
psapiのEnumProcess等を使うとか書いてあったので
Heap32ListFirst/Nextを用いてやってみます
ありがとうございました
お勧めの書籍教えてください
>>245 書店に行って片っ端から立ち読み汁!重複するトピックが多分重要な部分だ。
その重要そうな部分を一番分かりやすくかつ深く書いてる本を買え。大切な
ことはその一冊で満足するなってことだ。買った本を読み終わったら上に書いた
ことを何度か繰り返せ。最初の印象とはずい分違っているはずだ。それは君が
成長したことに他ならない。健闘を祈る。
>>247 まさにその通りです
自分の見たページにもNTとしか書いてなかったんですが
つい2000やXPも含めて考えていました
NT4.0を単にNTと表記されると混乱の元だよな。
250 :
デフォルトの名無しさん :03/08/19 15:30
「横書きテキスト+任意の"横幅"を持つアイコン画像」 と、言うデータを、リストとして表示したいのですが、 適当なコモンコントロールや、方法を教えて頂けないでしょうか。 アイコン付きリストビューが、最適かと思っていたのですが、 これはアイコンサイズが16x16(32x32)で固定のようで…無念です。
何故オーナードローを使いませんか。
252 :
Windows GDIでの質問です :03/08/19 15:48
反転する線を描きたいのですが、どうすればいいでしょうか? 例えば、ある画像にRGB(255,255,25)で線を描くと、 白ではなく、元の画像とXORされる線を描きたいのです。 どなたか教えてください
>>251 いやぁ、このくらいなら、既存のものでチャキチャキ
終わらせたかったなと<(*´Д`)
オーナードローしかないですか…レスサンクスです。
>>252 SetROP2(hdc, R2_XORPEN)
>>254 わーい、出来ましたー
ありがとですよ!!!
何故カスタムドローを使いませんか。
何故ケアルドローを使いませんか。
子ウインドウは親ウインドウの終了を知ることは出来ますか?
それは子ウィンドウにもWM_DESTROYが送られるという意味ですか?
261 :
デフォルトの名無しさん :03/08/20 11:09
ShellExecuteで起動したアプリケーションをPostMessage等で終了させる方法を教えて下さい。
264 :
デフォルトの名無しさん :03/08/20 18:23
CreatDCで作成したプリンタのデバイスコンテキストにTextOutで文字を描画して BitBltでウインドウのデバイスコンテキストに転送して印刷プレビューを ウインドウに表示させようとしているのですが表示されません。 手順を間違えてるいるのでしょうか?教えて下さい。
プリンタのデバイスコンテキストからは転送できない。
猫でも分かるプログラミングSDK編を勉強しているのですが メニューを作る際、resource.rc、resource.hに記述して コンパイルすると「.Debug/resource.resが開けません」 となってしまいます。これは何が原因なのでしょうか?
そのディレクトリが無いからじゃないか?
268 :
デフォルトの名無しさん :03/08/20 23:55
Win32 APIでキーボードやマウスの動きを自動化するプログラムを 作りたいのですが、どのようにすればいいのでしょうか?
いえ、フォルダもファイルも存在しています
>>266 プロジェクトにリソースファイルを加えてないとかw
いえ、SourceFilisの下に確に入っています
Filesですね。
あれ?ワークスペースを開き直したら普通に出来ました。お騒がせしました。
>>268 かなり勉強しないと無理臭い
勉強じゃないならば、FreeMacroってソフトを使ったら?
275 :
デフォルトの名無しさん :03/08/21 12:42
CreateFile(...)で作成したファイルの途中以降のデータを切り捨てる方法を教えてください。 先頭から途中までのデータを新しいファイルに書き込むってのは無しの方向で。 SetFilePointer(hFile, 0x9613E, NULL, FILE_BEGIN); CloseHandle(hFile); これで0x9613E〜EOFまで切捨てられるかと思ってた。
276 :
名無し@沢村 :03/08/21 12:50
>>275 SetEndOfFile
関係ないがファイルマッピングでファイルサイズ伸張をバイト単位で綺麗に制御する方法を思いつかない
>>276-277 ありがd。
しかしヘルプのCreateFileの所にリンクくらい張っておいて欲しいな。
SetEndOfFileにはCreateFileのリンクあるのにさ・・・。
>>278 SetFilePointerやWriteFileのとこにはリンク張ってあるし・・・
CreateFileで扱えるオブジェクトはファイルだけじゃないからなー
>>274 むー、そんなに難しいことなんですか?ちょっと考えが甘かったかな。
かなり趣味の領域なんですが、キーボードやマウス操作の自動化って
かなり面白そうだし実用性あるなーと思います。
やっぱりマクロじゃなくてプログラミングでやりたいですねー。
CSVファイルの読み込み・編集・保存等をしたいのですが参考になるHPってありますか? またエクセルのセルのようなものを作ってそこに読み込ませたいのですが、どのコントロールを 使えばいいのでしょうか? VC++6.0使ってます どなたか教えてくださいませm(_ _)m
>>280 まずはフリーマクロというソフトを使ってみてください。難しいことは一切なし。非常に簡単。
どうしてでも気に入らなければプログラミングで。
やり方が推測できないようならばゼロから勉強して下さい
>>2 の猫でもわかる〜を読んで
>>268 はキーボードやマウス操作を自動化したいんでなくて
キーボードやマウス操作の自動化するプログラムを組んでみたいって事だろ?
まあ他のソフトがどんな挙動してるか調べるにはFreeMacro使ってみて損はないけどな。
つうかそんなに難しくないと思うけどな。
>>283 質問している内容から、質問者にはかなりハードルが高そうですね
とりあえずJournalPlaybackとか挙げておけば?
誰も触ってないのにキーボードがカタカタタイプされたり、マウスが移動しているとすると、 既にホラーだと思うのだが
うちのマウスなら勝手に動くぞ
>>287 光学マウスとかで、カーソルが勝手に動くことがあるみたいなオチ?
マウスを掴もうとすると、嫌がって逃げたり
290 :
デフォルトの名無しさん :03/08/22 14:22
_beginthreadex()の戻り値をHANDLEにキャストして WaitForXXX()系のAPIに渡す事って正当な行為なんですか? そんな事が出来るみたいな記事をどっかのHPで見たのでやってみたんですが、 スレッドハンドルがシグナル状態になってもWaitForSingleObject()が制御返してくれません。
_beginthreadex()の戻り値でWaitForSingleObject()使えるみたい。 ヘルプに書いてあった。 んじゃ下のコードでWaitForSingleObject()が制御を返してくれないのはなぜ? hThread = (HANDLE)_beginthreadex(NULL, 0, ThreadEntry, (void*)this, CREATE_SUSPENDED, &uiThreadID); SetEvent(hThread); WaitForSingleObject(hThread, INFINITE);
>SetEvent(hThread); これは何?
>>293 SetEvent(hThread);でハンドルをシグナル状態にして、
WaitForSingleObject()がすぐに制御を返すかのテスト。
でもこれCreateEvent()で作成したハンドルでないとダメなんかね。
SetEvent が対応できるハンドルは、イベントのハンドルだけ。
すみません。 GetGlyphOutlineでは下線や打消し線は無視されるのでしょうか?
CreateFileを使うと 2000,XPだと正常にファイルができるんですが Meだとファイルができません 使えないんでしょうか?
そうなっているんなら、そうだろ。 そんな修飾付きのアウトライン返されても困ると思うがね。
>>297 Windows9xでは使えない引数使ってるだろ
>>281 > どのコントロールを使えばいいのでしょうか?
はぁ ? ほんとに VC++6.0使ってるの ?
VB の間違いとか言う落ちじゃないよね ?
まあどちらにしてもスレ違いだよ。
>>300 VBだとそういうのがあるってのはわかってるんですが、VCでやろうと思ってるんですよ
スレ違いですか?だったらスミマセン
一応APIに関することだと思ったのですが・・・
>>301 > 一応APIに関することだと思ったのですが・・・
マジでか ?
> CSVファイルの読み込み・編集・保存等をしたいのですが参考になるHPってありますか?
ReadCSVFile(), EditCSVFile(), SaveCSVFile() とかの API があるとでも思ってんのか ?
CSV ファイルと言ってもいろいろバリエーションがあるのは知ってるのか ?
(話の流れから、エクセル互換か ?)
またMFC も使わずに...
> またエクセルのセルのようなものを作ってそこに読み込ませたいのですが、どのコントロールを
と言うことをしたい漢なのか ?
だったらその「エクセルのセルのようなもの」ってどういうものかを説明すれば、やさしいお兄様方が適切な API を教えてくれるかもしれない。
ただし、やりたいことによるけどそれなりのコード量になると思うよ。
VB6使ってます。Textout()でPictureBoxの上に文字列を 表示してるんですが、その文字列ににアンチエイリアスを かけて出力する方法が分かりません(;´Д`) 検索するとGetGlyphOutline()を使えば出来ると見かけますが、 全然使い方がわからず困ってます。GetGlyphOutline()以外で 実現する方法があるなら、何方かご教授頂ければ幸いです。
>>303 ぐぐればGetGlyphOutline()の説明なんていくらでも出てくる。
GetGlyphOutline()以外の実装としては文字をグラフィックとして扱えば、
いくらでも方法はあると思う。
一番簡単なのは大きめのフォントで描画して縮小だな。
305 :
デフォルトの名無しさん :03/08/23 12:07
DragQueryFile()でウィンドウに対しドロップされたファイルの個数とそれぞれのフルパスを手に入れることが出来るのですが、 どこからドロップされたのかを知る術が分かりません。 c:\hoge\hage\ というディレクトリ構成があると仮定して、 hage内のファイルをドロップした場合におけるhageを検出したいのです。
>>305 フルパスが分かれば、
どこからドロップされたか分かりそうなもんだが・・・
ファイルがドロップされた場合は親ディレクトリがドラッグ位置だが、 ディレクトリがドロップされた場合はどこまでさかのぼればいいのだ? あ、これも親ディレクトリでいいのか?
検索からドラッグされる可能性はあるな
>>308 新たな問題発覚(;´Д`)
でもWinRARだと検索からのドロップはディレクトリ無視して圧縮してるね。
そんな方向で対処します。
エディットコントロールの文字列を変数に代入するのはどうしたらいいでしょうか。 がいしゅつであればアドレス出してください。
>>311 GetWindowText() か WM_GETTEXT
一応Win32 APIの「SetCursorPos」を使ってマウスカーソルの移動は
できるようになりました。
マウスのクリックやキーボードの制御は「SendInput」を使えば
いいのでしょうか?
>>282 フリーマクロちょっと使ってみました。とても参考になりました。
>>302 なんか的外れな質問してるみたいでスミマセン
始めて間もないので実はよくわかってないとこがあるんですよ・・・今猫で勉強中です
じゃあやるなって言われそうですが、やらなきゃいけないもので・・・
>CSV ファイルと言ってもいろいろバリエーションがあるのは知ってるのか ?
エクセル互換のカンマ区切りのCSVファイルと思ってたんですが、ほかにもあるのでしょうか?
ttp://up.isp.2ch.net/up/a31622ee5486.jpg ↑はVBで作ってあるのですが、Cでこんな感じにしたいんですよ
無理ですかね?
>>314 やれやれはっきり言わないとわからないみたいだな...
・CSV を扱う API なんかない。
・Excel みたいなセルを扱うのは最終的には API を使うだろうが、普通は直接 API なんか呼ばない。
∴ スレ違い。
VC 使ってるんなら、VC のスレに行った方が良いよ。
> エクセル互換のカンマ区切りのCSVファイルと思ってたんですが、ほかにもあるのでしょうか?
データ中の改行の扱いはどうするとか、細かいことを言い出すときりがない。
GetWindowText()はどのライブラリの関数ですか?
user32.libでねーの。実体はCOMCTL32.DLLにあるみたいだが。
VCスレ逝って来ます お騒がせしました&ありがとうございました
SendInput
>>321 mouse_event、keybd_event
324 :
デフォルトの名無しさん :03/08/25 00:50
ResumeThread()の返り値が -1で、GetLastError()が 0ってどういうことです?
おっと ERROR_CALL_NOT_IMPLEMENTEDが返ってきていた
MSDNには「戻り値が 0 の場合、指定したスレッドが中断されていなかった ことを示します」と書いてあるが、中断していないスレッドを ResumeThread すると0ではなく-1が返って GetLastError=0になるっぽいです。 MSDN間違ってる? Win98なんだけど、NTと9xで違うのだろうか...?
329 :
デフォルトの名無しさん :03/08/25 11:17
330 :
デフォルトの名無しさん :03/08/25 11:28
メール受信日付で+900とか+400とかの日時の計算方法と種類を教えて下さい。
333 :
デフォルトの名無しさん :03/08/25 13:38
いや+400とかの意味つうか時間になんぼ足すとかって書いてるとこ知りたい
何故RFCを読みませんか。
RFC厨は逝ってください
RFCすら読めない厨は逝ってください。
RFCしか言えない厨は消えて下さい。
RFC知らない厨は死んで下さい。
339 :
デフォルトの名無しさん :03/08/25 14:46
ふぁみこんのなかまだろ
340 :
デフォルトの名無しさん :03/08/25 15:01
Real Family Computer
初代ファミコンはTVと接続するときにRFC使ってた
342 :
デフォルトの名無しさん :03/08/25 15:14
344 :
デフォルトの名無しさん :03/08/26 03:43
キーボード入力で[D],[4],[→]の同時押しを検出しようと思い、 GetKeyboardState関数、GetAsyncKeyState関数を用いてプログラムを作成したのですが、他の3つのキーの同時押しは検出できるのですが、何故だか[D],[4],[→]の同時押しが検出できません。 これは仕様なんでしょうか? 何方か[D],[4],[→]の同時押しの検出方法をお教えください。 環境はVC++6.0,Win2000です。 よろしくお願いします。
AT互換機のキーボードのハードウェア的な仕様なのでどーにもなりません。 コストダウンでどんどん安物を追求していった結果です。 シフトキー以外の同時押しは保証されないと思ってください
>>344 PCでgeme作る時非常に困るんだよね、この仕様
347 :
デフォルトの名無しさん :03/08/26 09:54
自分が答えられないと板違いってほざく厨房がいるスレはここですね?
板違いじゃなくてスレ違いだよな
しかしもう
>>334 が答えてるじゃないか
答えてもらえないと煽る厨房がいるスレは(
便乗して煽る厨房がいるスレはここです!
352 :
デフォルトの名無しさん :03/08/26 11:16
コマンドラインから(自作のアプリからでもいいのですが) myhelp.chmを検索単語 myword で開くにはどうすればいいですか?
>>352 一応、HtmlHelp API がある。使ったことないからよくしらない。
>>355 板違いなので余所へいけ。
えー、そんなー
360 :
デフォルトの名無しさん :03/08/26 19:24
板違いなら俺んとこへ来い!
DialogBoxもMFC使わないでモーダルダイアログ?(WM_DESTROYまで処理を返さない方)を表示するにはどうやればいいんでしょうか? モーダルにするウインドウ以外のウインドウのメッセージを全部カットするんでしょうか?
呼び出した関数の中にメッセージループ作ればいいんじゃねぇの? 後はフォーカスの制御も必要か。
>>365 オーナーウィンドウにEnableWindow(FALSE)して
ダイアログを閉じるときにEnableWindow(TRUE)で戻す。
368 :
デフォルトの名無しさん :03/08/28 10:18
以下の手順で外部プロセスを終了するためにTerminateProcessを使っているのですが うまくいきません。なにが悪いのでしょうか? 1.プロセスを列挙し終了させるプログラムのIDを取得する。 2.プロセスIDからプロセスハンドルを取得する。 3.TerminateProcessを呼び出す(TerminateProcess(ProcessHandle, 0&)) 4.プロセスハンドルクローズ 言語:VB6 OS :Win2000
369 :
デフォルトの名無しさん :03/08/28 10:32
特定のウィンドウのHWNDを取得して,そのウィンドウに対して 使用不可(マウスでそのウィンドウをクリックしても何も反応しないようにする) 右上のペケボタンを使用不可にする 隠す(タスクバーからも消す) 表示する はSendMessageでどのようなメッセージを送ればよいのですか? 教えてください
上から順に EnableWindow システムメニューから閉じるを削除 ShowWindow(SW_SHOW) ShowWindow(SW_HIDE) SendMessageを使うものなんか1つもないが
SW_SHOWとSW_HIDEが逆だった
EnableWindow関数の説明によれば WM_CACELMODEとWM_ENABLE使えばいけるっぽい ウィンドウを閉じずに、 タスクバーから消す方法は知らない 最初からタスクバーに表示しないウィンドウをつくるなら、 CreateWindowEXのスタイルで、 WS_EX_TOOLWINDOWを指定すれば良かったと
373 :
デフォルトの名無しさん :03/08/28 11:08
>>370-371 ご親切にどうも
>システムメニューから閉じるを消去…
どういうことですか?(汗
374 :
デフォルトの名無しさん :03/08/28 11:09
>>373 CreateWindowするときに、スタイルにWS_SYSMENUを付けない
註:WS_OVERLAPPEDWINDOW,WS_POPUPWINDOW はWS_SYSMENUを含んでいる
もしくは、
style =GetWindowLong(hWnd,GWL_STYLE);
style &= ~WS_SYSMENU;
SetWindowLong(hWnd,GWL_STYLE,style);
みたいな感じでいけたと
ただ、最小化ボタンと最大化ボタンも消えるけど
>>375 なるほどなるほど
ペケボタンは消すんじゃなくってただ単に押せなくなる(色が薄くなる)
だけでいいんですけどね…
ただまぁ自分のWindowをそうするんじゃないんで…たのWindowをいろいろ操作
したいのです
>>373 GetSystemMenuでコントロールメニューのハンドルを取得して
EnableMenuItemでIDがSC_CLOSEなメニュー項目を無効化
つーか少しは自分で調べてよ
378 :
デフォルトの名無しさん :03/08/28 11:59
>>377 ごめんなさい,ちょっと甘えてました
みなさんどうもありがとう!
379 :
デフォルトの名無しさん :03/08/29 00:08
指定の exe 実行して、終わるまで待機 って API無いですか? ShellExecuteだと、立ち上るけど、そのまま処理を続けるてるし。
ShellExecuteEx
ファイルを検索するのにFindFirstFileを使用しています。 Debugモードでは日本語を使用しているファイル名を指定でき、 ファイルを見つけることができます。 しかしReleaseでビルドしたものは全く日本語を受け付けてくれません。 原因は何が考えられるでしょうか。 環境 : VC++7.1,Win2KSP4 プロジェクトの設定 Release : スタティックライブラリでMFCを使用する。 Debug : 共有 DLL で MFC を使用する. 文字セット : マルチ バイト文字セットを使用する 問題と思われる個所のコード。 HANDLE dno; TCHAR dir[MAX_PATH]; WIN32_FIND_DATA fil; if ((dno = FindFirstFile(dir, &fil)) != INVALID_HANDLE_VALUE) { よろしくお願いします・・・困ってます。
すいません。sageてしまいました。改めてよろしくお願いします。
申し訳ないのですが、他の個所に問題があったようで FindFirstFileは関係なかったようです。 もう少し調べてから質問すべきでした。 お騒がせしました。
CreateThreadで作ったスレッドがまだ実行中に CloseHandleしたら成功したんだけど、 これってどういうこと? スレッドが終了次第、自動的にスレッドオブジェクトが破棄されるの? それともやっぱりスレッドが終わってから再度CloseHandleしないといけないの?
ハンドルハ実体ニアラズ
386 :
デフォルトの名無しさん :03/08/29 17:05
>>385 実体ってスレッド自体のこと?スレッドオブジェクトのこと?
>>386 WinMain にある
szFileName が初期化されて無いでち
389 :
デフォルトの名無しさん :03/08/29 17:38
>388 ZeroMemoryで上手くいきました、有難うございます
390 :
デフォルトの名無しさん :03/08/29 18:53
ウィンドウメッセージ SC_MINIMIZEで最小化 SC_MAXIMIZEで最大化 元のサイズに戻すのは…SC_ZOOM? ああSC_ZOOMとSC_MAXIMIZEって一緒だったんだっけ?
SC_RESTOREだけど、ウィンドウメッセージではないぞ。
392 :
デフォルトの名無しさん :03/08/29 20:01
>>391 SendMessageじゃだめなのですか?
393 :
デフォルトの名無しさん :03/08/29 20:22
OS2のdllはコールゲート呼び出す設計らしいけど windowsのdllってコールゲート呼び出してるの?
>>392 SC_MINIMIZEなんかは、ウィンドウメッセージWM_SYSCOMMANDのパラメータ。
SendMessage(hwnd, WM_SYSCOMMAND, SC_MINIMIZE, 0)
指定したフォルダの中の全てのファイルパスを 拾得するにはどうしたらいいでしょうか?
書き忘れました、VC++6にてSDKでやっています OSはXPです。
FindFirstFile / FindNextFile
>>393 Windowsはコールゲート使ってません。
int 20とかarplとか(Win9x)
int 2eとか(WinNT, WDM)
401 :
デフォルトの名無しさん :03/08/30 11:36
402 :
デフォルトの名無しさん :03/08/30 13:29
403 :
デフォルトの名無しさん :03/08/30 20:47
2重線を引きたいのですが、Penにはそういうのが ないと思うのですがAPIとかあるのですか?
>>403 GDI+のPen::SetCompoundArray()ぐらいかな。
GDIにはない。たぶん。
>>404 どうもです。
やはりですか。。。
GDIにはそんなのがあるのですね・
GDI使えないのでwidth5で引いて上からXORでwidth3で引いてみる
とかしてみますね。。。ありがとう。
GDI+ってVC6で使えないよね? 初めて聞いたw もうそろそろ乗り換えないといかんのかなぁ
>>406 いや、そんなこと全然ないぞ。ないはず。
GDI+は最新のプラットフォームSDKダウンロードしたら付いてなかったかなぁ?
単に
>>406 がGDI+もそれがVC6で使えることも知らないだけだ。
409 :
デフォルトの名無しさん :03/08/31 16:00
W2Kでフォルダをネットワーク経由でアクセス可能な共有状態にし、 そのフォルダのアクセス権からeveryoneを削除して、 Administoratorをフルアクセスで追加って事をしたいです。 バッチファイルでできそうな気がしたのですが、 net share、caclsでは、フォルダそのもののアクセス権を 変更するだけで、ネットワーク経由のアクセス権を変更 する事はできないようです。 適当なWin32APIがあればコマンドを自作してしまおうと思い、 こちらに書き込ませていただいてます。 ご存知でしたらアドバイスをお願いいたします。
APIENTRYとWINAPIって、何が違うの? ググっても同じとしか書かれてないんだけど、 本当は何か違いがあるんじゃないの? 歴史的な理由とか?教えてプリーズ。
412 :
デフォルトの名無しさん :03/09/02 00:35
ドライブのフォーマットを取得するAPIってありますか? 種別はGetDriveTypeとかなんとかで取れたんですが FAT32かNTFSか、というのも判別したいんです。 おながいします。
(゚д゚)<GetVolumeInformation
414 :
デフォルトの名無しさん :03/09/02 01:02
>>413 即レスありがとうございます。
逝けそうです。
415 :
デフォルトの名無しさん :03/09/02 03:51
case WM_VSCROLL: switch (LOWORD(wParam)) { case SB_THUMBTRACK: HIWORD(wParam); } スクロールに関する質問なんですが、 HIWORD(wParam)では 0〜65535 の範囲でしか値は得られませんよね? 65536 以上ドラッグ操作でスクロールしたい場合はどうしたらいいのでしょうか?
416 :
デフォルトの名無しさん :03/09/02 03:52
STRINGTABLE { IDS_A "あああ" } ↓ STRINGTABLE { IDS_A "いいいいい" } コンパイル時にexeファイルに入れたリソースの内容を書き換えるようなことはできないでしょうか?
>415 MSDNに書いてある。 >Thus, an application can call GetScrollInfo while processing >either the WM_HSCROLL or WM_VSCROLL messages to >obtain 32-bit scroll-bar position data.
MessageBoxで表示されるアイコン(MB_ICONINFORMATIONとか、MB_ICONHAND等)は 自前で使えないでしょうか?何かヒントになる APIがあれば教えて下さい。
422 :
デフォルトの名無しさん :03/09/02 13:54
spoolデータの所有者を変更したいのですが。 何か方法ありませんか?
423 :
デフォルトの名無しさん :03/09/02 15:30
久しぶりに蓮コラ見た
425 :
デフォルトの名無しさん :03/09/02 15:35
これは引数に指定したフォルダの中のファイル数をカウントするつもりで作ったのですが なぜか毎回二個増えてしまいます、だれか助けてくだちぃ。 例えば空のフォルダ指定してもなぜか二個になってしまいます。 隠しファイルは表示させてあるのでわかると思うんですが・・。 int Find(char *fDir) { HANDLE hFind; WIN32_FIND_DATA fd; char Dir[256]; int count = 0; if(fDir[strlen(fDir)-1] != '\\') return -1; wsprintf(Dir,"%s*.*",fDir); hFind = FindFirstFile(Dir, &fd); if(hFind == INVALID_HANDLE_VALUE) return -1; do { count++; } while(FindNextFile(hFind, &fd)); FindClose(hFind); return count; } 無関係ですがホットゾヌつかて見ました、はまりカケです。
fdの中身を確認してみれ。
. .. の二つじゃねーの。 つーかデバッグしてフォルダ名見てみりゃいーじゃん。
カレントと親
カレントじゃなくて自分自身
ぬぁ!フントでした!フォルダも検索されていたんですね
FILE_ATTRIBUTE_DIRECTORYで判別してみました。
>>427 ~
>>430 ありがとう!
432 :
デフォルトの名無しさん :03/09/02 21:12
Win32API と Win32SDK って何が違うの?
こんなの相手にすんな
まあまあ。 APIはプログラムを作るためのライブラリ関数。 SDKはプログラムを作る時の組み方。 つまり、比べる分野の地点で違う。
ここわ殺伐としたインターネットですね
API = Application Program Interface あるソフトウェアの機能を他のプログラムから利用するための手続き。 Win32APIではほとんどがDLLからexportされた関数として提供されている。 SDK = Software Development Kit ある環境で動作するソフトウェアを開発するのに必要なものの一式。 Windows SDKの場合C/C++用のヘッダ、DLLや、それをリンクするのに必要な インポートライブラリ、各種ドキュメント、サンプルプログラム等が含まれている。
437 :
デフォルトの名無しさん :03/09/02 23:51
デスクトップとか フォルダでファイルがドラッグ開始された瞬間を取得するには、 どうすればいいですか?
>フォルダでファイルがドラッグ開始された瞬間 ボタンを押下した瞬間か移動しはじめた瞬間かどっちなんだ
勉強させてもらいました。
440 :
デフォルトの名無しさん :03/09/03 00:09
>>410 ありがとうございました。
720個のフォルダを手動で共有化せずに済みそうです。
441 :
デフォルトの名無しさん :03/09/03 00:13
>>438 どちらでもいいです。
あえて言うなら
移動した瞬間です。
プログレスバーがクリックされたかどうか知りたいんですけど どうすればいいんでしょうか?
>>443 サブクラス化してWM_LBUTTONDOWNを処理。
445 :
デフォルトの名無しさん :03/09/03 12:35
拡張子関連付けの起動ができないURL(index.html#aaa 等)をブラウザで開きたいのですが、
ShellExecute(0, "open", BrowserPath, "", 0, SW_SHOW);
// BrowserPath = とりあえずエクスプローラへのパス
とすると、起動はできるのですが、実行するたびに新しいウインドウが起動してしまいます。
拡張子関連付けの場合、既に存在すれば使いまわされます。
一応、ぐぐってたら前スレの 29 にヒットしました
http://pc.2ch.net/tech/kako/1006/10067/1006783012.html/29 つまり「既に存在するならそこで開いてほしい」のですが、どうしたら良いでしょうか?
今、Winsockを使用しマルチプロセスサーバを作成しています。しかし、 親プロセスから子プロセスへのソケット値の継承方法がわかりません (CreateProcess関数を使用しプロセスを生成しています)。 わかる方がいらっしゃいましたらご教授お願いします。 環境はVC++6.0 WINSOCKバージョンは1.1を使用しています。 また、スレッドは使用しないようにしたいと考えています。
DuplicateHandle
リフレッシュレートを変更する方法って 何かないですか? UNIXではsetmonとかをsystem関数で呼び出してたんですが その部分をWindowsで実現したいのです
ごめんなさい 解決しました
450は偽物です。 引き続き情報をお待ちしてます。
何でリフレッシュレートを変更したいわけ?
ChangeDisplaySettings ChangeDisplaySettingsEx
引き続き皆さんの情報をお待ちしてます。 お電話はこちらまで。 4400333
455 :
デフォルトの名無しさん :03/09/03 22:35
Win32API関数の一覧が載っているページを知りたいのですが教えてください。
456 :
デフォルトの名無しさん :03/09/03 22:35
>>460 ありがとうございます。ただ、英語でページの使い方が分からないので、
いろいろいじってみます。
英語読めないのにプログラミングするなと小一時間
MSDN(SDK含む)は平易な英語だから辞書があれば中学生でも理解できると思う
要は簡単な英語を訳す努力もしないような奴はプログラミングをするなと(
465 :
デフォルトの名無しさん :03/09/04 04:25
ウインドウ上のマウス位置を取得したいのですが、どうすればよいのでしょう。 GetConsolePosやlParamだと、スクリーンの上のを調べてしまいます。
ScreenToClient
Borlandのbcc55フリーコンパイラでWindowsプログラミングができるのでしょうか? _mainのシンボルが未解決と出てしまいます( ´Д⊂ヽ
>>467 普通に可能だが。
何故そのエラーが出るのかといえばbccの使い方が理解できていないから。
>>466 GetCursorで画面での位置を取得
↓
ScreenToClientでウインドウでの位置に変換
でできました。ありがとうございました。
Win2k/XPでは、CTRLを押しながら[シャットダウン...]を押すと
緊急時シャットダウンとなり、瞬時(1〜2秒)でウィンドウズが
シャットダウンします。
これと同じ事をプログラムからAPIを呼び出して行いたいのですが
どのAPIを使えばよいのでしょうか?
ExitWindowsEx( EWX_FORCE | EWX_SHUTDOWN , 0 );
とやったらイケルかと思ったのですが、この場合、アプリなどは
強制終了されているようですが、Windows自体のシャットダウン
プロセス自体は通常通りでした。(「設定を保存中です」という
ダイアログが表示され、10秒程度終了処理を行ったあと電源が切れる)
(参考) Windows で緊急時シャットダウンを実行する方法
http://support.microsoft.com/default.aspx?scid=kb;ja;279134
>>472 ありがとうございます。
EWX_FORCEIFHUNG は試してみました。
これをつけると無条件にアプリのプロセスを終了するのではなく
応答無しのプロセスのみ強制終了するようになります。
結果、EWX_FORCE のみのときに比べてシャットダウン処理時に
余計に時間がかかるようになります。
この方が安全なのでしょうけど、いまやりたいのは即座に
シャットダウンさせたいのです。
MS Pゴシック 12pt の時のいろいろな文字列の実際に表示された時の幅を 取得したいのですが、どうすればいいのでしょうか? いろいろ調べた結果 GetTextExtentPoint32 がぁゃιぃと踏んだのですが…
>475 Font 変更のところで詰まっていたへたれでして… でも、検索したら猫に解説がありました(´・ω・`)
HDC hdc = GetDC(NULL); HFONT hFont = CreateFont(12, 0, 0, 0, 0, 0, 0, 0, SHIFTJIS_CHARSET, 0, 0, 0, 0, "MS Pゴシック"); SIZE size; GetTextExtentPoint32(hdc, "e", 1, &size); cout << "e" << size.cx << endl; GetTextExtentPoint32(hdc, "g", 1, &size); cout << "g" << size.cx << endl; 結果: e6 g6 こういう結果が得られたのですが、実際に IE にて二つの文字を表示してみたところ e のほうが 1 dot 大きいのですがなぜでしょうか? IE が特殊なのん?
TextOut()やDrawText()でウインドウに出力したテキストを消去するにはどうすれば良いですか?
>>477 CreateFontの引数はピクセル単位だぞ。12ピクセル=9ポイント(WinXPデフォルト設定で)
>>478 背景色で塗りつぶす。もしくは背景の画像の該当部分をコピー。
>>477 hFontを使ってないように見えるけど…省略しただけ?
ふぉんとのことを言うと、SelectObjectしないとFontが変わらないよ。
江~~~~~~~~~~~~~~~~~~フォントォォ~~~?????????????????????????
CreateIoCompletionPort()やらについて解説してるサイトってないッスか? …MSDN以外ないッスよね…。
書籍でいいならAdvanced WindowsとかProgramming Windows2000とか当たってみたらどうだ? 英語のサイトなら多分あると思うが。
487 :
デフォルトの名無しさん :03/09/05 00:20
DOSコマンドのnetstatのような自分のPCに接続している接続先の情報一覧 などを得ることはできないでしょうか?
>>487 GetTcpTable, GetUdpTable,
XP以降なら
AllocateAndGetTcpExTableFromStack,
AllocateAndGetUdpExTableFromStack
のほうがプロセスIDも取れて便利。
489 :
デフォルトの名無しさん :03/09/05 00:38
文字列があって、あるサイズ(横幅)に収まるポイントが ほしいのですが、ループで回して調べるしか ないでしょうか?
>>489 意味がわからないが、たとえば
あいうえおかきくけこさしすせそ
↓
あいうえおかき...
みたいなのを実装したいの?
>>471 の件ですが、ExitWindowsExでは無理そうなので
SYSTEMプロセスをTerminateしてやろうと挑戦中です。
HANDLE hProc = OpenProcess( PROCESS_QUERY_INFORMATION | PROCESS_VM_READ | PROCESS_TERMINATE , false , <プロセスID> );
BOOL fStat = TerminateProcess( hProc , 0);
システム系のプロセスを対象としたとき、PROCESS_TERMINATE を
つけるとOpenProcessが失敗するようです。
SeDebugPrivilege を使うとなんでもありにあるようなので
これから試してみます。
[HOWTO] SeDebugPrivilege を使用して任意のプロセスへのハンドルを取得する方法
http://support.microsoft.com/default.aspx?scid=kb;ja;JP131065
ちょっと前に同じような質問なかったっけ。
>>490 いえ、エクセルの「縮小して全体表示」みたいなのが
ほしいです。。。
なんとなく独り言モード
>>491 の SeDebugPrivilege を使う方法でほとんどのプロセスを
Terminate出来るようになりました。
タスクマネージャーで「致命的なシステムプロセスです。」と
いわれて終了出来ないプロセスも終了できます。
ただ肝心の「System」プロセス(PID=8)は終了できません。
イメージ名に「.EXE」がついていないので、Idle Processの
ような仮想的なプロセスなのでしょうか。
とりあえずいろいろプロセスを殺してみましたが、WINLOGON.EXEを
Terminateしたら、いきなり画面が黒くなりマシンがリブートしました。
これか?と思いましたが、リブートしては目的に添わないし
もう一度試してみても再現性がありませんでした。がっかり
496 :
デフォルトの名無しさん :03/09/05 04:41
質もの願いします 画面を持たないEXEモジュールで以下のことをしたいのですが。 1.エクセルを起動 2.オブジェクトを取得 3.値を配置 4.保存 5.エクセルを閉じずにオブジェクトを開放 6.人間の手で修正 7.(この間VBはエクセル終了まで待機) 8.人間の手で終了 9.エクセルの内容をDBに変更 で、 1は「ShellExecuteEX」 2は「GetObject」 7は「WaitForSingleObject」 を使って実現しようと考えました。 ところがいくつか問題がありまして、よろしければご指導ください。 1.「画面を持たないEXEモジュール」なので「ShellExecuteEX」のhwndに0を渡すと 戻りの実行ファイルのハンドルが0で帰ってきて、「WaitForSingleObject」が機能しない。 2.ループでExcelの起動完了を検出してからGetObjectでオブジェクト変数を取得しに行くが 既にエクセルが起動している場合はにうまく機能しない よければご教授お願いします。
オンラインのMSDNの効率的な検索方法教えて。 普通にAPIの名前だけ入れてもうまく引っかからないことが多いので とりあえずこんな感じでキーワードを並べるとだいぶましになるけど完全とはいえない。 ShellExecute site:www.microsoft.com プラットフォーム SDK それにしても個人のサイトでAPIリファレンス載せてる人々は一体何を考えているんだろう? 検索精度が下がって激しく邪魔なんだけど。
あ,あの,Windows でハードウェアスクロールって ・・出来ないすよね,やっぱし・・ いえ,もういいっす・・すんませんっした・・
>>486 うーっし、Advanced Windows辺り見てみまっさー
501 :
名無し@沢村 :03/09/05 12:56
>>496 とりあえずWaitForSingleObjectにはHWNDを渡すのではなく
ShellExecuteExが返すプロセスハンドルを渡す。
CreateFontといえば、自分は将棋をwin32アプリで作っていて、駒の表示、 画面の部分クリアなんかをCreateFontでやっているが、エディタに書き込んでいる 時などにマウスで文字属性を変えられる所を行ったり来たりさせていると、 表示がバグる。いったん最小化させて、又元に戻しても、ばぐったままのが表示 される。あまり頻繁には使ってはいけないものなのかも。
CreateFontで画面の部分クリア? 意味わかりませんが。 っつーか、フォント作りすぎてリソース不足になっているだけか?
504 :
デフォルトの名無しさん :03/09/05 14:15
>>501 レスありがとうございます。
プロセスハンドルを渡してますがその値(ハンドル)は常に0のようです。
おそらくShellExecuteExに渡すHWNDにトップウィンドウのハンドルを指定
すればいいと思うのですが、そこで操作の糸が切れました・・・・
>481 コピペした時に誤って消してました(汗 >479 CreateFont(16, 0, 0, 0, 0, 0, 0, 0, SHIFTJIS_CHARSET, 0, 0, 0, 0, "MS Pゴシック"); で e8 g7 の出力が得られました。どうやら成功のようです。 ありがとうございました。
>>504 ShellExecuteで得られるのってHINSTANCE にキャストされてるだけで、
実際のHINSTANCEとは違うんじゃなかった?
そういうのにはCreateProcess()ではないのかと。
すまん。ShellExecuteExには hProcess があるのね。
>>503 >CreateFontで画面の部分クリア? 意味わかりませんが。
消したい部分が30×100なら、CreateFontの引数をそのサイズにして
半角スペース1つを出力。
>っつーか、フォント作りすぎてリソース不足になっているだけか?
CreateFont→駒1枚表示→Deleteにしてたけどそれだとそうなる?
後、全部の駒を一度に表示する時(初期、再表示)は、同じ属性の表示
(上攻め、下攻めなど)は変更→全て表示→Deleteで表示する様にしたが
それでもダメだった。ただ、その時変更した後Deleteせずに再変更して、
終わりの時だけしかDeleteして無かったかも。
>>508 そういう用途ならExtTextOutのほうが便利だと思うが。
ExtTextOutで矩形を塗りつぶす方法はMFCのCDC::FillSolidRectのソースが参考になる、 つーのも大概どうかと思うが。
素直に矩形で塗り潰せっと
ブラシとか作って矩形で塗りつぶすより、CDC::FillSolidRectみたいに ExtTextOutでやったほうが、かな〜り速かった記憶が
しかもExtTextOutのほうが格段に手間かからんしな。
>>504 hProcessを得るときはSEE_MASK_NOCLOSEPROCESSフラグが必要だってさ。
あとウィンドウがないときはSEE_MASK_FLAG_DDEWAITフラグも付けろとかなんとか
書いてあるような。MSDN。英語自信なし。
>>515 そのページは知っているのですが、選択できるものがいっぱいあって
使い方が分かりません。
Win32API一覧
CreateFont
ExtTextOut
TextOut
...
windows.h構造体の型一覧
POINT
...
こんな感じになってくれていればうれしいのですが。
知っている、使ったことがあるものでこつこつ作っていこうかな。
>>506 >>516 レスありがとうございます。
SEE_MASK_NOCLOSEPROCESSはついてます。
SEE_MASK_FLAG_DDEWAITも試しにつけてみます。
板さえ出せばhwndは取得できるわけで、しょうがないから
「EXCEL起動中」板でも出して逃げちゃおうかなぁなどと考えています。
後はエクセルのファイルが起動した後、如何にオブジェクトを取得するかですが。
・・・・・これも厄介そうです。修行と思ってがんばります。
APIって難しいですねぇ(T−T)
>>518 というか、やりたいことからするとCOM使ったほうがよさげな気がするが。
>>519 レスありがとうございます。
COMってなんですか?
521 :
デフォルトの名無しさん :03/09/05 21:48
WNDCLASSとWNDCLASSEXはどう使い分ければよろしいのでしょうか なにぶん、ド初心者なのですが・・・ (´д`;) (\/) ((
Advanced Windowsによると 「最初からいきなりCOMアーキテクチャの学習を始める人には同情の意を禁じえない」 と。
>>520 Component Object Model
何ができるかって説明は面倒なんで自分で調べろ。
例えばIEコンポーネントのタブブラウザなんかもこのシステムで実現されている。
>>521 ド初心者なら何も考えずにMSの推奨どおりWNDCLASSEX使っとけば?
別に大した違いはないし。
>>523 ありがとうございました。
>大した違いはないし。
で納得しました。WNDCLASSEX使うことにします。
Microsoft Visual Studio\VC98\Includ\WINUSER.h を見たところ、
弱冠メンバ変数(?)の数がWNDCLASSEXの方が多かったので、まだ自分には理解できない機能が余分にWNDCLASSEXにはいっているのかなぁと思いました。
>>520 実行形式ファイルの1つ。
スタックセグメントを持たないDOS EXE形式ファイルを
EXE2BINユーティリティで変換することにより得られる。
激しくつまんね。略してハゲ妻。
ハゲ妻 昼下がりの情事
マジレスですが、MSDNライブラリでWin32APIのリファレンス見るにはどうたどればいいんでつか? 子一時間やってるけど、みつからないのですが。
530 :
デフォルトの名無しさん :03/09/06 11:38
キーボードを押してもまったく反応させないようにするには… どのAPIを使えばよいの?
グローバルフック
>>530 wParamメッセージを無視すれば、反応しないと同じだと思うが。
533 :
デフォルトの名無しさん :03/09/06 15:41
スクロールメッセージの SB_TOP とか SB_BOTTOM はどうやったら送られてきますか?
スクロールバーを操作したら
535 :
デフォルトの名無しさん :03/09/06 19:20
StretchBltで縮小した画像がむちゃくちゃ汚いんですけど… なんとかできませんか? ゲフォ2MXにて
>>535 SetStretchBltMode() 試してみた?
>>536 わぁ,ありがとうございます!,綺麗にできました!
こんなAPIしりませんですた
538 :
デフォルトの名無しさん :03/09/06 22:23
ウィンドウの大きさを変更したりしてWM_PAINTが呼び出されたときの再描写で ビットマップなどを再描写したときにちらついてしまいます。 今はBeginPaint()を使っているのでこれが一度描画領域を消去してから描写しなおすらしく、 背景の色で消去せず上書きのようにすればちらつかないと思うのですが、 どなたかその方法を教えていただけないでしょうか?
WM_ERASEBKGNDを捕まえて潰しておくこと。
ありがとうございました!
541 :
デフォルトの名無しさん :03/09/06 23:04
ダイヤルアップネットワークの接続・切断やダイヤルアップネット ワークエントリーの編集ができるWin32-APIってありますか?
むろんあります
543 :
デフォルトの名無しさん :03/09/06 23:25
>>536 ありがd
拡大縮小は自前で補間処理を書かなきゃならないと思ってた。
このスレ見てヨカタ〜
>>529 なんか構成が変わったようだが見つからん事はなかろう。
例えばCreateFileなら
www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpfileio/html/_win32_createfile.asp
545 :
デフォルトの名無しさん :03/09/07 04:10
windowをある一定の大きさより小さくサイズ変更出来ないようにするにはどうしたらいいですか?
>>545 ・WM_GETMINMAXINFOに適当に反応
・WM_WINDOWPOSCHANGINGで適当に調整
屑が屑を屑呼ばわりするの図。
test
551 :
デフォルトの名無しさん :03/09/07 15:37
↓の関数なんですが SetClassLong(hWindow,GCL_HCURSOR,(LONG)LoadCursor(NULL,IDC_ARROW)); 「LoadCursorの戻り値HCURSORをLONGに切り詰める」と警告しやがります。 そりゃごもっともですが、黙らせるような上手い方法はありませんか? ただし、警告レベルを下げるとか、SetCursorを使うとかはなしです。
>> 551 キャストすればいいんでは?単純に
ごめん、質問の意味を理解してませんでした 警告レベルを下げずに警告するな、というのはできないのでは? 一時的に下げる、とかでもダメ? たいていのコンパイラの #pragma あたりで操作できないのかな あるいはいっそのことヘッダファイルかなんかの 先行宣言の部分を強引に書きかえるしかないんじゃないの? ちなみに、C++での話だったら、reinterpret_cast<>を 使っても警告してくるの?
>552 単純にやってだめだから質問してるんじゃないの? >551 コンパイラは何よ?
そういや、「切り詰める」と警告してくるの? あなたの環境では HCURSOR と LONG の サイズが違うのか…それならキャストは危険だな
HCURSOR = HICON__*で最近のVC++あたりは64bit環境を視野に入れてるから 警告を出すんじゃないか。まぁその辺は不用意にLONGにポインタをつっこませる Win32API自体が糞だと思ってあきらめろ。
Win64対策ならSetWindowLongPtrとLONG_PTRだな Win16は忘れた
>>553 んだな、規格違反はエラーであり、警告は規格外。
#pragma warning(disable : 4999)
560 :
デフォルトの名無しさん :03/09/07 19:54
分割ペインってWin32APIレベルで用意されてる? フレームワーク使わない場合は自分で実装しなきゃいけないのかな。
>>557 細かくてスマンが、今回はSetClassLongPtrな。
>>560 ウィンドウクラスとWIN32 APIは関係ないと思うが。
コモンコントロールには無いな
564 :
デフォルトの名無しさん :03/09/07 21:13
質問おながいします。 CreateCompatibleDC()ですが、フォントとかのGDI オブジェクトは元のDCから反映されてないみたいなのですが どうすればいいのでしょう? またなぜ反映してくれないのでしょうか?
565 :
デフォルトの名無しさん :03/09/07 21:43
SetClassLong(hWindow,GCL_HCURSOR,(LONG)(LONG_PTR)LoadCursor(NULL,IDC_ARROW)); で黙りやがりました。どうもです。 何か怖い気もするけど、正常に動いてるし、まぁいいや。
>>565 いや、最近のSDKではSetClassLongの代わりにSetClassLongPtrを使うことになってるのよ
キャストを使えばそりゃ黙るだろう
つーか64bit対応が邪魔ならプロジェクトの設定で外すのが正道 今まで貯め込んできたライブラリまで全部移植するのは片手間じゃ無理
569 :
デフォルトの名無しさん :03/09/08 00:43
system("cd sub"); を実行しようと思ったのですが、どうやらうまくいきません。 そもそもcdコマンドって外部プログラムじゃない気がしますが。 どうやったらこの機能を実現できますか?
>>569 基本的には子プロセスでカレントディレクトリを変更しても親プロセスに影響しないから無意味
つまり、カレントフォルダを変更する方法を教えてください。 ということです。
>>570 ありがとうございます。
親のプロセスのカレントを移動する方法はないでしょうか。
>>573 ありがとう。これでできそうです。
もしかしてwinapiじゃなかったのかな。
だとしたらごめんなさい。
>>573 できればネタは控えて欲しいです。マジレス希望なので。
ちっ・・・
ありがとう
580 :
名無し@沢村 :03/09/08 00:54
ここはAPIスレだから、
>>573 の回答は非常に不適切。
正しくはSetCurrentDirectory()だ。
581 :
デフォルトの名無しさん :03/09/08 02:25
ウインアプリのウインドウにはprintfは使えない?ので、TextOutで出力 しているのですが、可変引数で無いので不便です。sprintfを使えば出来る のですが、変数を用意し、2行書かなければなりません。sprintfの文字列を 戻り値で返すバージョン、又は、TextOutの可変引数バージョンがあるなら 教えてください。
自分で関数つくれボケ
>>581 MFCのCStringクラスを使えばsprintfよりは簡単に書けるかも。
C++ならboost::format使えば一応一行で書けるな。
お答えありがとうございます。
>>582 可変引数はかなり難しかった気が。
...と書いて、varとかの構造体を何かやるという。
自分のLVでは無理っす。
>>583 MFCはほとんど使ったことが無いのですが、調べてみます。
>>584 ::は使ったことが無いのですが、通常関数の感覚でコードに付け足して
みたのですが、エラーになってしまいました。いろいろ調べてみます。
586 :
デフォルトの名無しさん :03/09/08 03:31
ShellExecuteで複数のURLを複数のウィンドウを開いて 表示する処理を行いたいのですが、どうしても 開いた一つ目のウィンドウ内で表示されてしまいます。 どのようにしたらよいでしょうか?
587 :
デフォルトの名無しさん :03/09/08 03:44
親ウィンドウと子ウィンドウでそれぞれ別々のウィンドウクラスを作り、 コールバック関数を同じウィンドウプロシージャにしたいのですが、 動作がおかしくなりました。 同じプロシージャは使えないのでしょうか?
588 :
名無し@沢村 :03/09/08 03:55
>>586 ShellExecuteをやめてIWebBrowser2を使う。
589 :
デフォルトの名無しさん :03/09/08 03:57
>>588 ありがとうございます。
早速取り組んでみます。
590 :
デフォルトの名無しさん :03/09/08 11:06
Win32APIで、コントロールパネルやアプリケーションの追加削除画面を開くことは出来ますか?
WinExec("control appwiz.cpl", SW_SHOW);
>>587 Win32APIとあんまり関係ないだろ。
コールバック関数は静的(スタティック)である必要があり、
別々のウィンドウはそれぞれ別個のインスタンスを持ち、
スタティック関数は全インスタンス(メンバなら同一クラスの全インスタンス)に共通。
つまり、コールバックから各インスタンスへ振り分けてやる必要がある。
MFCなんかだとウィンドウハンドルからマップオブジェクトを利用して、
CWnd*を取得し、内部関数を呼ぶ構造(だったと思う)。
593 :
デフォルトの名無しさん :03/09/08 14:31
我ながら情けない質問なのですが、リストビューの任意の項目を 選択するリストビューメッセージを、教えて頂けないでしょうか。
LVM_SETITEM
>>594 レスありがとうございました。おかげで
それらしいフラグを、ようやく発見できました。
596 :
デフォルトの名無しさん :03/09/08 15:43
10行の.txtファイルを 自作メモ帳で表示します。 現在画面には4行表示できます。 このとき SCROLLINFO の設定は nPage = 4; nMin = 0; nMax = 10; ですか? それとも nPage = 4; nMin = 0; nMax = 10 - nPage; ですか?
聞く前に試せ。
598 :
デフォルトの名無しさん :03/09/08 20:15
Winny2の設定変更したら、自動的にアプリの再起動がかかったんだけど、 アプリの再起動ってどうやるん?
再起動が掛かったように見えるだけじゃねぇの?
設定を保存する。 自分自身のパスを取得し実行。実行元を終了。
>>598 単にメインルーチンで
main(){
for(;;)
{
Application->Init();
Application->Run();
}
}
とかやってるだけだろ。
>>598 メインフレームをSH_HIDE。
しばらくSleepしてから、位置を少しずらしてSH_SHOW。
たったこれだけで、何でもGUIで物事を考えてる連中にはきっと、
再起動したように見えるはず。
>>603 ループでCPU消費して、ついでにHDDにでもアクセスしとくとより効果的
>>603 なるほど。詰めが甘かったですね。もっと精進してきます。
んで見せかけてどうすんの
603がループしている。
>>605 FormCreate/FormDestoyイベントを発生させて設定の再読み込みでもしてるんだろ。
>>605 利用者に、アプリの再起動ってどうやるんだろ?って思わせる。
609 :
デフォルトの名無しさん :03/09/09 02:17
ウィンドウの大きさを変えずにクライアント領域の大きさだけを変えるAPIって有りませんよね?
>>609 私も以前ここで教えてもらったのですが
WM_NCCALCSIZEに反応するみたいです。。。
612 :
デフォルトの名無しさん :03/09/09 11:04
画像等へ任意の色で網掛けするAPIってありますか?
ブラシにそのように設定するだけ
614 :
デフォルトの名無しさん :03/09/09 11:12
ハッチブラシの線の間隔って変えられるの?
ゴチャゴチャ言わずに好きな網のビットマップを作ってブラシに関連づけろ
616 :
デフォルトの名無しさん :03/09/09 20:32
フォルダを開いてウィンドウが表示される位置を指定したいです。 ShellExecuteEx(&sei); で非表示のままロードし、 WaitForSingleObject(sei.hProcess, INFINITE); で待って、 EnumWindows( EnumWndProc, (LPARAM)0); として、 EnumWndProcでウィンドウを移動してから表示させようと したのですがsei.hProcessが0なってしまいます。 良い方法ありませんか?
SEE_MASK_NOCLOSEPROCESSは付けてるか?
(
>>518 によると付けてるようだが)
>>616 ShellExecuteExの戻り値/エラーコードはどうなってますか?
_SHELLEXECUTEINFOのcbSizeに値を設定していなかったりしませんか?
ありがとうございます。
>>617 つけてます。(ちなみに518さんとは別人です)
>>616 sei.cbSize = sizeof(SHELLEXECUTEINFO); ってしてます。
戻り値は1でした。
フォルダの場合、他のプロセスで表示させて新しいプロセスは
すぐ終了してしまうのかな、と想像してますが...
ShellExecuteEx()より CreateProcess()の方が 構造体の初期化とか簡単で確実じゃね?
>>620 PROCESS_INFORMATIONに値は入ってましたが、
WaitForSingleObject(pi.hProcess, INFINITE);
や
WaitForInputIdle(pi.hProcess, INFINITE);
で待ってくれているように見えませんでした。
なんででしょう?
CreateProcessだったらSTARTUPINFO使って位置を決められるものなの
でしょうか?どうも、うまく動きません。
質問ばかりですみませんが、何か良い方法があればお願いします。
>>621 dwProcessIdで示されるプロセスは、終了しているはずです。
NT系ならタスクモニタで確認して下さい。
これは、おそらく最初に起動したプロセス(A)がプロセス(B)を起動した後に
終了していると思われます。
PROCESS_INFORMATIONのPIDは、プロセスAのものと思われます。
画面上に表示されるものは、プロセスBになっているのでは?
このような動作をするアプリに、ペイントがありますね。
622に書いている動作の通りとして。 Win2000以降なら、プロセスBのハンドルを取得するAPIがあったような・・・ 以前MSDNで見た気が。ハンドル等のオブジェクトの生成元を追跡していく ようなことが出来るAPIだったので、逆もあるはず。 よく覚えて無い、スマソ
以前MSDNマガジンで記事が載ってたな〜 いつだったか思い出せない・・・
>>622 ありがとうございます。
> プロセス(A)がプロセス(B)を起動した後に終了
私のイメージでは、プロセスAが元々ある場合は、プロセスBを起動すると、
BがやろうとしていたことをAに引き継ぎ、Aがスレッドとして実行しつつ
Bは終了してしまう。という感じです。
結果的に同じことですけど。
>オブジェクトの生成元を追跡していく
そんなこともできるんですね。初めて聞きました。
なんか、やりたいことは単純なのにややこしいですね。
C++からADO使おうとしてCOMの初期化(マルチスレッド使う)やってまつ。
CoInitializeEx(NULL, COINIT_MULTITHREADED);
こうやった後、
ShellExecute(hWnd, NULL, "
http://www.yahoo.co.jp ", NULL, NULL, SW_SHOWNORMAL);
としてみたんですが、ShellExecute が ERROR_FILE_NOT_FOUND(2) を返してきまつ。
CoInitializeEx(...) -> CoInitialize(NULL) とするとブラウザ立ち上がるんですが・・・
マルチスレッド環境でADOを使いたいので CoInitializeEx を使わなきゃだと思うんですが
CoInitializeEx 使うと ShellExecute がマトモに動かず・・・
どなたかこのような経験ありませんか?長文スマソ
627 :
デフォルトの名無しさん :03/09/10 01:15
スタート→シャットダウンや、 タスクマネージャでの強制終了な時に送られる ウインドウメッセージって無いですか? 常駐ソフトを作っていて ウインドウズ終了時に設定保存したいのですが
628 :
デフォルトの名無しさん :03/09/10 01:35
CreateWindow()でWS_HSCROLL、WS_VSCROLLを使い、 fMaskで SIF_DISABLENOSCROLLを使用しないで スクロールバーがウィンドウの大きさによって出たり消えたりさせたいのですが、 スクロールバーが表示されているときに クライアントエリアの大きさ(スクロールバーが表示されている部分を除いた大きさ) を得るにはどうしたらいいでしょうか? 私のプログラムではWM_SIZE:の時に得られるクライアントエリアの大きさが nMaxとnPageの関係によって スクロールバーが表示されている部分を除いた大きさと スクロールバーが表示されている部分も含めた大きさ のどちらか一方になってしまうようです。 これを片方にすることはできないのでしょうか? 普通はこのようなことはないのでしょうか?
>>627 Windows終了時なら
WM_QUERYENDSESSION
WM_ENDSESSION
が送られてくるが。
630 :
名無し@沢村 :03/09/10 01:41
>>627 > スタート→シャットダウン
WM_QUERYENDSESSION
>>627 常駐ソフトがサービスを指しているなら注意。
WM_ENDSESSION,WM_QUERYENDSESSIONはlogoffの時にも
送られてくる・・・
632 :
デフォルトの名無しさん :03/09/10 10:27
OS(Win95,Win98,NT,2000,XP)を識別する方法を教えて下さい
634 :
デフォルトの名無しさん :03/09/10 11:47
635 :
デフォルトの名無しさん :03/09/10 11:53
636 :
デフォルトの名無しさん :03/09/10 11:59
あと、NTと2000とXPもね
C:\>ver
641 :
デフォルトの名無しさん :03/09/10 12:43
いいから教えれよカス共が
642 :
デフォルトの名無しさん :03/09/10 12:46
いいから調べろよ負け犬が
643 :
デフォルトの名無しさん :03/09/10 14:34
マイコンピュータ右クリック→プロパティ→全般→システム
644 :
デフォルトの名無しさん :03/09/10 14:53
黙れよ負け犬のうんこの食物繊維
ダイアログで閉じるボタンを押したら最小化してそのあとに閉じるには、 これでだめ? case WM_CLOSE: SendMessage(hDlg, WM_SYSCOMMAND, SC_MINIMIZE, 0); EndDialog(hDlg, LOWORD(wParam)); return TRUE; なぜかタスクバーからすぐ消えてくれないんだけど…
647 :
デフォルトの名無しさん :03/09/10 18:34
氏ねよ負け犬のうんこの食物繊維を食ううんこ蝿が
メッセージ送信先と、case WM_CLOSE: を含むウィンドウプロシージャを持つものが同じ?
649 :
デフォルトの名無しさん :03/09/10 18:57
相当【負け犬】という言葉に敏感とみた(w 負け犬負け犬負け犬負け犬負け犬 負け犬負け犬負け犬負け犬負け犬 ぶははははははははははははあああああああ あれ?(w
650 :
デフォルトの名無しさん :03/09/10 19:00
ということにしたいようだな
>648 同じです。
>646 WM_SYSCOMMANDが処理されていないのでは? SendMessageでタイムアウトが返っているだけとか
>653 最小化はするのでメッセージは処理されてるのかなぁ? 最小化したあとにタスクバーに3秒ぐらい残ってしまうんです。 タスクトレイにアイコンを出していて、そのアイコンが拾ったメッセージで処理する時はいいのですが、 とうのダイアログ自体を閉じるボタンで閉じた時に症状が出ます。 ちなみにSendMessageの戻り値は0でした。
すみません。原因のようなものがわかりました。 タスクバーに入れていたMS-IMEの影響だったようです。 でも、ちゃんと動いてるソフトもあるのに何でだろう…
タスクバーに暫く残ったりするのを防ぐには一旦ShowWindow(hWnd, SW_HIDE); しておけばいいんじゃなかったか。
EndDialogってWM_CLOSE出すんじゃ?
WinXPのPPPoEにファイアーウォールを設定するAPIを教えてくれ。 PBKファイルにもレジストリにも見当たらない・・・。
>>649 最近エヴァ板に出没する荒らし蚊と思いました
あちこち探しても、Windows2000のAWEのAPIの使い方の 情報がありません。EMSのように使えるらしいのですが、 どのようにプログラムを作ったらよいのですか?
WAVE再生のWaveOutOpenや、録音のWaveInOpenの ボリュームを調整したいのですが、WAVE_MAPPERで デバイスを指定している場合、使用しているデバイスの LineIDやデバイスのIndexなんかは、ひっぱってこれる のでしょうか・・・・
.txtのファイルを読み込んで画面に表示するには どんな関数使ったら良いのでしょうか?
type
LoadImageってJPEGやPNGも読み込めるの? そうだったんならOleLoadPictureで作ったオレは激しく鬱だ・・・(´・ω・`)
668 :
デフォルトの名無しさん :03/09/13 04:07
カスタムウィンドウクラスじゃないSTATICとかのウィンドウクラスで 背景色とかを変えるにはどうしたらいいですか?
672 :
デフォルトの名無しさん :03/09/13 07:22
マウスカーソルがウィンドウ上にあるか、外にあるか知るにはどうしたらいいですか? WM_MOUSEMOVEだとウィンドウ上を動くたびにすごく無駄なきがするので・・・
>>663 使ったことが無いが、たぶんwaveOutSetVolume。
WAVEFORMATEX、WAVEHDR構造体には無い。
>>672 GetWindowRectしてPtInRect
もしくはWindowFromPoint
>>673 この人は、もうちょっと高度なオーディオミキサーの
制御がしたいようですが。
深く考えなければ音量調整はwaveOutSetVolumeで出来るけどね。
ただし、ドライバーの作りで少々挙動が変わる。
ミキサーのボリュームと連動している場合と、してない場合とか。
WAVE_MAPPER で「オープン」してるなら、オープンしているハンドルを使って、
mixerOpen API 呼べば開けるでしょ。
オープンして無くても一瞬開いてハンドル作ってミキサー
開いた後で閉じちゃえ。
676 :
デフォルトの名無しさん :03/09/14 02:23
ボタンの名前を複数行表示するにはどうしたらいいですか?
残念ながらそれはムリ。
オーナードロー
679 :
デフォルトの名無しさん :03/09/14 02:31
BS_MULTILINE
>669 Thanks!!完璧!!!
681 :
デフォルトの名無しさん :03/09/14 18:14
WIN32ってなんでつぁか?
682 :
デフォルトの名無しさん :03/09/14 18:26
ダイアログにスライダーコントロールを貼り付けたのですが 背景を透明にしたくて困っています。 スタティックコントロールはSetBkMode(hDC, TRANSPARENT); でできたのですが同様のことをするにはどのようにしたら よいでしょうか?
683 :
デフォルトの名無しさん :03/09/14 23:12
WIN32ってなんでつぁか?
684 :
デフォルトの名無しさん :03/09/15 01:03
カメラの画像を表示するソフトを作ろうと思っているのですが、 GlobalAllocでバッファを取り、そこに、24ビットDIBを、0,5 秒間ごとに入れ替えています。これを、AVIとして表示、もしくは 保存したいのですが、なにか良いAPI関数はありますでしょうか?
685 :
デフォルトの名無しさん :03/09/15 01:05
>>683 ええっと32ビットって感じかい?
ってのは嘘で、Win95以降をあらわすことが多いと思うで。
Win3.1はWin16。それ以降は大体Win32といってもよい。
そういえば、Win95以来GUIの大きな変化はないな。
XPもやっぱり変わっていない。右上の×とか_とか□とか。
>>684 Video for Windowsでぐぐる
688 :
デフォルトの名無しさん :03/09/15 05:22
DLLを指定して公開されたAPIの関数宣言一覧を取得するツールはないでしょうか? 具体的にはcabview.dll、zipfldr.dllのAPIを調べてみたいのです。 フリーのアーカイバは使いたくないので。
tdump(Borland製), dumpbin(MS製)を使って一覧を取得できました。 ちなみにExportしている関数は両DLLともに EXPORT ord:0002='DllCanUnloadNow' EXPORT ord:0003='DllGetClassObject' EXPORT ord:0004='DllRegisterServer' EXPORT ord:0005='DllUnregisterServer' EXPORT ord:0006='RegisterSendto' EXPORT ord:0001='RouteTheCall' でしたがいまいち使い方が分からないです。各APIをもうちょっと調べてみます。
690 :
デフォルトの名無しさん :03/09/15 05:44
>>687 参考になるものが、ありました。
ありがとうございます。
>>689 そいつらを調べても時間の無駄だと思うよ。
Shell Extensionだから。
692 :
デフォルトの名無しさん :03/09/15 09:07
ThreadIDから情報取得する関数ってありますか?
693 :
デフォルトの名無しさん :03/09/15 09:53
Platform SDKってどこに落ちてます?
落ちちゃいない。
696 :
デフォルトの名無しさん :03/09/15 17:06
WIN32ってなんでつぁか?
697 :
デフォルトの名無しさん :03/09/15 20:22
windows 32bitじゃないの?
698 :
デフォルトの名無しさん :03/09/15 21:29
プログラム作るときに必要になるWin32ってなんでつか?
699 :
デフォルトの名無しさん :03/09/15 22:08
QueueUserWorkItemってAPI使おうとしてるのですが これもCreateThreadみたいにLPTHREAD_START_ROUTINE内でCライブラリ関数使っちゃだめなんですかね?
700 :
デフォルトの名無しさん :03/09/16 01:57
C#のShowDialogのように、ウインドウが処理結果を返すまで、呼び出し側の次の行のコードが実行されないようにするにはEnableWindow(PARENT,FALSE)のあとにどうすればよいのでしょう。
ShowModalじゃあかんの?
703 :
デフォルトの名無しさん :03/09/16 02:41
705 :
デフォルトの名無しさん :03/09/16 17:19
ツリービューを作ろうとして下のコードを実行するとアプリケーションとOSが固まり、タスクマネージャも起動できなくなります。 ログオフを選んで強制終了させなければなりませんでした。 何故でしょう? INITCOMMONCONTROLSEX ic; ic.dwSize = sizeof(INITCOMMONCONTROLSEX); ic.dwICC = ICC_TREEVIEW_CLASSES; InitCommonControlsEx(&ic); hwnd = CreateWindowEx(0, WC_TREEVIEW, "Tree View", WS_CHILD | WS_BORDER | WS_VISIBLE | TVS_HASLINES | TVS_HASBUTTONS | TVS_LINESATROOT | TVS_EDITLABELS, 0, 0, 100, 100, Parent, (HMENU)IDC_MYAPP, hInstance, NULL);
なんかネット上に落ちてるプログラムを実行してもフリーズするので僕のシステムのComCtl自体が変になっているのかもしれません。 自分で造ることにしたのでスレ汚しすみません
ADO によるデータベース接続のサンプル どこかにありませんか?
自分で探せよ。
↑ ナイス(゚∀゚)コンビ!!
質問です。 ボタンに画像を表示させるにはどうすればいいのですか。
ダイアログのボタンです。↑
714 :
デフォルトの名無しさん :03/09/18 11:21
一応、ageておくので答えてください。
717 :
デフォルトの名無しさん :03/09/18 14:22
LPDWORD lpdword; ReadFile(file,str,1,lpdword,NULL); これでファイルリードしたらlpdwordがWrittenできないという エラーがでました。 なんで、型がこんなにややこしいのでしょうか? 目的は、CStringにstrの内容を代入したいのですが とにかくLPDWORDのヘルプがありませんでしたこの正体はなんでつか? BOOL ReadFile( HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped );
API以前の問題だなこりゃ
全然ややこしくないので、ちゃんと勉強して理解するまでネットに繋がないでくだちい。
717は、 DWORD *ptr; *ptr = SOME_VALUE; とかやるタイプか。
わかってしまえばなんてこたないが 型というかtypedefされたのは最初はややこしいかもしれない。 LPCTSTR LPTSTR LPCSTR … もう初めに見たときは何がなんだか
Windows98,BCCですが、「開く」ダイアログが出てきません 最初の二行に #define _WIN32_WINNT 0x400 #define WINVER 0x400 も入れています どうすれば上手くいくのか教えて下さい static HBITMAP hbmp; とグローバルに定義しておいて、関数 void get_bmphandle(HWND hw) によってhbmpを得て void bit_paint(HWND hw) で描画しようとしました
void get_bmphandle(HWND hw){ char szFilter[]="ビットマップ(*.bmp)\0*.bmp\0すべて(*.*)\0*.*\0"; OPENFILENAME ofn; char *szFileName;//ダイアログから受け取るファイルの名前 memset(&ofn,0,sizeof(OPENFILENAME)); ofn.lStructSize = sizeof(OPENFILENAME); ofn.hwndOwner = hw; ofn.lpstrFilter = szFilter; ofn.nFilterIndex = 1; ofn.lpstrFile = szFileName; ofn.nMaxFile = FILENAMESIZE; ofn.lpstrTitle = "ファイル名の取得"; ofn.lpstrDefExt = "sqf"; ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY; ZeroMemory(szFileName,sizeof(szFileName));//szFileNameの初期化 if(GetOpenFileName(&ofn)){ hbmp=(HBITMAP)LoadImage((HINSTANCE)GetWindowLong(hw,GWL_HINSTANCE),//インスタンスハンドル szFileName,//arb IMAGE_BITMAP, 0,0, LR_CREATEDIBSECTION | LR_LOADFROMFILE); if(hbmp==NULL){MessageBox(hw,"ファイルオープンに失敗しました","msg",MB_OK);} } }
>724 あなたの仰る通りですね・・・ malloc入れたらダイアログ出てきました
char szFileName[MAX_PATH]でいいじゃん。
>726 有難うございます その方が簡単みたいですね
>>723 > char *szFileName;//ダイアログから受け取るファイルの名前
> ZeroMemory(szFileName,sizeof(szFileName));//szFileNameの初期化
っていうかダメだろ‥‥
背景のCGにキャラの立ち絵を重ねるような処理ってどうすればできますか?
>>729 まー方法はいろいろあるけど。
とりあえずTransparentBlt()が楽。
ファイルをロードしたあとDIBでマスクを自動的に作れるクラスを作っておくともっと幸せになれる。
リージョンつくってDCに選択っててもあらぁな。
>>718-721 もうね、全部ね、char* intで統一汁とvoid*ややこしいし
なんでパラメタごとに元の肩を見に行くのかと、
>DWORD *ptr; *ptr = SOME_VALUE;
?初期値の場合はポインタとらない主義?という回答でいいでつか?
>>734-735 ( ´_ゝ`)ついでに教えてくれ
前の続きになるが
FileRead()のパラメタで読み込み先のポインタLPWORDがあるんだが
それの対応をEditBoxの内容にしたいわけよ、つまり表示させていわけ
だが、EditBoxがCString型なためどうやってLPDWORDを関連させて
CStringに代入しようか考えてるんだが、char[]で経由したほうがいいでつか?
737 :
デフォルトの名無しさん :03/09/19 11:18
正直このままC++をやり続けるのはどうかと思う。 Cを勉強して出直すか、C#へ行って楽になってしまうか、どちらかをお勧めする。 (C#へ行くにしてもCの知識があるとないとでは大違いだが)
つーか、CStringとか言ってるならみんなMFCでやりゃいいじゃねえか。 なんでFileReadなんてraw apiを使うのかワカラン。
>Cを勉強して出直すか、C#へ行って楽になってしまうか、どちらかをお勧めする。 Cは今復習してるぽ、C++チョットオブジェクト嗜好なだけ、C#♪ 俺が足りないのはセンスだけだと思うんだが それとLPDWORDはvoid*だからやっぱり char a[]; ReadFile(,,a,,); CString b = a; これはまずいのか?
>>740 藻前に足りないのはセンスだけじゃないのは確実だ
LPDWORDがvoid*なんて言ってる時点で終わってる
>>739 >CStringとか言ってるならみんなMFCでやりゃいいじゃねえか。
ごもっとだ、もっとも最初はメッセージ制御からネイティブでやってた
だが表示が面倒なんで、表示だけクラスつかってる
MFC限定かC言語限定かどのスレがいいかわからんし、、、
>>742 MFCとかAPI以前の問題だなこりゃ。
>>741 ( ´_ゝ`)あぁ定義みたら間違ってたYO
typedef unsigned long DWORD;
typedef DWORD far *LPDWORD;
ころでfarって32ビットって意味?
2つ目の*LPDWORDがわからん
ポインタは何を指しているの?ってことじゃないの?
>>740 キミに足りないのは「きちんと理解しようとする心構え」だと思う。
センスが問われるのは、ずーっとずーっと先のレベルだよ。
テキトーに雰囲気でつかもうとせず、根気よくヘルプをしっかり読もう。
DWORD lpdword; ReadFile(file,str,1,&lpdword,NULL);
>>748 まぎらわしいをまぎわらしいと書く人って結構居るんだな
>>750 誤爆じゃないだろw
まわりくどいレスだがな〜
752 :
名無し@沢村 :03/09/19 12:24
>>750 DWORD型の変数名にlpを付ける人はあまりいない
>>752 それを言いたかったのか。
できるだけ元(
>>717 )を変えたくなかったから、変数名はそのままにした。
DWORD dword;
LPDWORD lpdword;
lpdword = &dword;
ReadFile(file,str,1,lpdword,NULL);
これでどーよ?
>>717 の書いたところには手をつけてないぞw
755 :
デフォルトの名無しさん :03/09/19 12:30
>>752 今となってはLPもPも変わんないからね!
でも64ビットポインタになったらどうなるんだろう?
LLPとかになるのかな?
ソース可換性のために要るんだろうなぁ
>>745 そうギモンを感じれたら・・・
>>746 じゃnearとか読みとばせれってことね、MSDNをかちゅようせよってことね
>>747 <<<<<ガクガクガクブルブル>>>>>>>>>>>俺の人生を指摘されてるようだ・・・
>>748 あたま整理するぽ
>>754 >>757 こういうニュアンス?
unsigned long ulong;
unsigned long* pulong;
pulong = &ulong;
ReadFile(file,str,1,pulong,NULL);
( ´∀`)なんかまたおこられそう、、、
( ´∀`)激しく(
>>720 )の言うことがワカタ
char* pchar = 0x8000; //マスタ //char* pchar = 0x7f00; //ダミー1 //char* pchar = 0x5700; //ダミー2 memcpy( pchar, 0x8f00, 4096 ); G△MEB○Y ならありえる。
なんで、みんな明らかな釣り師に かまってるんだ?
>>762 キミ、「釣り」とかもう古いんだよ。
時代はマジレス。
ハァ?釣り?奴を見ろ。目がマジだ。
この人はさぁ、本気なんだよ。わかる?
まぁセンスとか言っちゃって、自分のレベルを自覚してないのは痛いな。
769 :
デフォルトの名無しさん :03/09/19 16:12
テキストファイルをReadFileで読み込むとfreadのテキストモードと違い、 改行コードの変換は行われずCRが付加されたまま(CR+LF)になりますよね。 通常のこCRは自前で除去すべきなのでしょうか? 何が問題かというと 1.あっても意味のないCRは処理の邪魔になる。 2.Winのテキストエディタで作成したファイルは通常CRが付加されるが、 自前でWriteFileで出力したデータはCRが付加されないので読み込んだ際にデータの矛盾が起きる。
>>769 漏れなら、自前で出力するデータにCRを付加する
>>769 除去する必要があるなら除去する。
必要がない、あるいは除去してはいけないのなら除去しない。
まあ普通はもし除去するなら保存時にまた付加しておくのが
筋ってもんでは?
>>770-771 要するにfopen系と同じ仕様にしなさいと言う事ですかね。
ご意見ありがとうです。
773 :
ホゲホゲ :03/09/19 21:24
既存のファイルをコピーするコードを教えてください
CopyFile
775 :
ホゲホゲ :03/09/19 21:33
ありがとう既存のファイルを無限ループでいっぱい作りたんだけど Win32?studio.h?どっちいんくるーどすればいいんですか・?
氏ね
くたばれ
778 :
デフォルトの名無しさん :03/09/19 22:36
オーディオミキサーが2個以上存在(サウンドカードとUSBオーディオ等)するときに、 現在、優先するデバイスになっているミキサーを特定する方法はあるのでしょうか? Win2000以外は優先するデバイスのIDが0になるようなので特定できるのですが、 Win2000のみIDが変化せず、優先するデバイスのIDが特定できず困っています。 やりたいことは、優先するデバイスになっているミキサーを制御することです。
779 :
名無し@沢村 :03/09/19 23:15
>>755 ヌヒよ、既存ならばわざわざ作らなくてもいいではないか
781 :
デフォルトの名無しさん :03/09/20 16:22
自前でダイアログボックスのようなウィンドウを作りたいのですが、どうやったらいいかわかりません CreateWindow( TEXT("STATIC") , TEXT("自前ダイアログ") , WS_OVERLAPPEDWINDOW | WS_VISIBLE , 20 , 20 , 100 , 100 , hwnd , (HMENU)1 , ((LPCREATESTRUCT)(lp))->hInstance, NULL ); こんな感じでやってみたのですがウィンドウは出てきません。 どうやったらいいですか?
すみません、親ウィンドウから呼び出されてダイアログウィンドウのように表示されるウィンドウを作りたいということです
>>718-719 STATICクラスを使わず、
普通にウィンドウを作るように書けば無問題
WNDCLASS pre_wc; pre_wc.style = CS_HREDRAW | CS_VREDRAW; pre_wc.lpfnWndProc = PreProc; pre_wc.cbClsExtra = pre_wc.cbWndExtra = 0; pre_wc.hInstance = ((LPCREATESTRUCT)(lp))->hInstance; pre_wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); pre_wc.hCursor = LoadCursor(NULL, IDC_ARROW); pre_wc.hbrBackground = (HBRUSH)GetStockObject(GRAY_BRUSH); pre_wc.lpszMenuName = NULL; pre_wc.lpszClassName = TEXT("PREVIEW"); if (!RegisterClass(&pre_wc)) exit(1); CreateWindow( TEXT("PREVIEW") , TEXT("ダイアロググ") , WS_OVERLAPPEDWINDOW | WS_VISIBLE , CW_USEDEFAULT , CW_USEDEFAULT , 100 , 100 , hwnd , NULL , ((LPCREATESTRUCT)(lp))->hInstance, NULL ); こんなんでいいんでしょうか? コンパイルとかはは問題なく通るのですが、やっぱりダイアログは表示されませんでした どこが間違ってるんでしょうか・・・
785 :
デフォルトの名無しさん :03/09/20 17:16
>>785 難しいことがよくわかりました
DialogBox()とかでいってみようと思います
ありがとうございました
てか 781 のこと気になるですな。提示されたコードに問題はなさげだし・・・ PreProc の中身はどんな感じですか? 私,前に if (msg =- WM_CLSOE) { // == じゃなくて =- になってる! ::DestoryWindow(hwnd); ... みたいな事やらかしてて,エラーメッセージも出ないし アプリケーションも落ちる気配がないし,悩んだ事がありました。 WinMe で実行すると一瞬で StackOverFlow で落ちてくれたんだけど(わらぃ
WM_CLSOE...
CreateWindow()したら ShowWindow()で作ったウィンドウを表示して UpdateWindow()で内容を表示かな? プログラミングWindowsを丁度第三章まで読み終わったばかりでおこがましいんだけど。
>>781 どうでもいいことですけど、
RegisterClassは返り値チェックしているのに、CreateWindowは
なぜチェックしない?
ソースのコピペのようですが、実際ソースはそう?
みなさんすみません 色々試した結果784でいけそうな感じがしてきました そこの部分だけ新しく別プロジェクトで実行してみたらちゃんと動きました 子ウィンドウを作る部分だけ関数化して更にソースも分割していたので変数か何かがおかしかったのかも知れません おさがわせしました
>>789 今日の私はなんかもうダメみたいです。。。_| ̄|○
794 :
デフォルトの名無しさん :03/09/20 22:26
アプリを作っていて、他のウィンドウの背面にあるウィンドウを手前に 出したくて、普通ならForegroundWindowで問題ないはずなのですが、 なぜか、手前に出てきてくれません。SetWindowPosで最前面にする方法だと 手前に出てくるのですが、これだと、永久にフローティング状態に なってしまいます。 これって原因わかりますか?または解決方法ありましたらご教授ください
796 :
デフォルトの名無しさん :03/09/21 01:56
>>795 ありがとうございます。しかし、それでは、任意のウィンドウを
まえにもってこれませんね。
関連の書類ファイルをダブルクリックして、そこから
起動中のアプリのウィンドウを表示させたいという
当たり前のことができなくなりますよね。
うーん
798 :
デフォルトの名無しさん :03/09/21 03:13
はじめまして。 Regionを利用するアプリケーションにおいて、GDIに関連することで質問があります。 GDIにおいて、滑らかな曲線等(アンチエイリアスが行われている)を得ることはできるのでしょうか。 アプリケーションは、デスクトップマスコット?のような、既存のBitmapからRegionを作成し、背景部分を透過させるという物です。 論理サイズとビューポートの設定で拡縮を行うのもためしたのですが、望むような結果が得られません。 GDI+においては、必要十分な結果は得られたのですが、品質的にイマイチ感があります。 何か、スマートな方法があれば、教えてください。 よろしくおねがいします
>>796 ユーザーが操作中にいきなりフォーカスを奪われたら迷惑だから
タスクトレイに通知を出すなりしろってこった
>>798 Windows2000/XPならLeyered Windowを使えばピクセル単位でウィンドウの透明度を
設定できるのでアンチエイリアスだろうとかけ放題だが。
>>796 フローティング状態って何?SetWindowPosにHWND_TOPでZオーダーを最前面に設定するだけじゃダメなの?
VirtualAllocのMEM_RESERVEで予約し、MEM_COMMITを使ってコミットします。 そして何らかのデータを確保した領域にコピーし、 VirtualFreeのMEM_DECOMMITでコミットした状態を解除すると、 確保した領域のデータは保証されないと思っていいのでしょうか? つまり、再びVirtualAllocのMEM_COMMITを使っても無駄ということで合ってますか?
803 :
デフォルトの名無しさん :03/09/21 10:20
FindWindowExで他のプロセスのウィンドウのエディットコントロールのハンドルを取得して、 EM_GETLINEで取得しようとしたのですが、 Windows2000では動くのにWindows98SEでは相手側のプロセスが死んでしまいます。 どうすれば両方で動くようになるのでしょうか?
EM_GETLINEで取得->EM_GETLINEで文字列を取得
>>800 レスありがとうございます。
ピクセル単位で処理できるというのは、初めて知りました。
LayeredWindowはあくまで、ウィンドウ全体に対し透過色を設定とアルファ値を設定するものだと思っていました。
アルファブレンドは特に必要ないと思ったため、Regionで処理しようと思っていました。
LayeredWindowを適用するAPIは、
SetLayeredWindowAttributes(hwnd,0,Byte(alpha),LWA_ALPHA);
という感じだと思うのですが(Delphi)、ピクセル単位の処理というのは、どのように行うのでしょうか?
お手数とは思いますが、よろしくお願いします。
>>805 UpdateLayeredWindowでぐぐる
808 :
デフォルトの名無しさん :03/09/21 13:47
アプリケーションが終了する時に、 必ず通るメッセージって何ですか? 終了しますか?ダイアログを出したいのです
810 :
デフォルトの名無しさん :03/09/21 16:18
>>808 OnDestroy関数だよ
>終了しますか?ダイアログを出したい のなら、 WM_DESTROYは少々手遅れの気があるが。
画像を読みこんで、画像と同じ大きさのウィンドウ上に画像を表示、 ってのをやろうとしています。 まず画像データを読み込んで情報を取得、 CreateWindow関数実行時にウィンドウのサイズに画像のサイズの値をそのまま 指定して、ウィンドウプロシージャでWM_NCCALCSIZEに対して他の処理を挟ま ずに単にreturn 0;とすることでクライアント領域のサイズ=ウィンドウのサイズと しています。 これでサイズは画像=クライアント=ウィンドウになる、という狙いです。 ただ、ある程度小さい画像を指定すると、何故か生成されるウィンドウが画像より 大きくなってしまいます。 画像(68,98)->ウィンドウ(112,98)みたいに。 OutputDebugStringで追ってみたところ、 ・CreateWindow実行直前では、値に問題無し。 (CreateWindowの引数は、こちらの予想通り) ・ウィンドウプロシージャでWM_NCCALCSIZEを受け取った時点では、 GetWindowRectでRECT構造体に入る値は大きくなってしまっている。 という風になりました。 ウィンドウの指定サイズが小さすぎると自動的に補正されるものなんですか?
>>812 経験則ですが、WS_OVERLAPPEDスタイルだと一定サイズ以下に小さくできませんね。
WS_GETMINMAXINFOをきちんと処理してもだめ。どこかにドキュメントあるのかな?
というわけでWS_POPUPスタイルでいきましょう。いくらでも縮められます。
ただしこの場合もWS_CAPTIONを付けちゃうと、一定サイズ以下になりません。
訂正 WS_GETMINMAXINFO → WM_GETMINMAXINFO
>813 ありがとう。ご指摘の通り、WS_OVERLAPPEDWINDOWスタイルを 指定してましたが、WS_POPUPに変えると期待通りの動作になりました。
>>805 UpdateLayeredWindow、MSDNの方を参照しました。
が、LayreredWindowのステータス更新用のAPIに思えるのですが..
申し訳ないです、アンチエイリアスとの関連がわかりません。
全体を少しだけ透過させるというのは、APIが2k/xp限定であること、また、「少しだけ透過」させても全体が透過されているため、アンチエイリアスとしては効果が薄いため、考慮から除去しています。
それとも、背景色を完全に透過させた後に、透過させてはいけない部分を任意のドットで縁取りし、その部分をUpdate~APIで半透化という意図なのでしょうか?
その場合、透過させてはいけない部分が単色とは限らないため、内側なり外側なりへ縁取りを行わないといけないと思うのですが...
アニメーションをサポートしたいので、縁を得るためのコストが気になります。
お手数とは思いますが、LayeredWindowを用いたアンチエイリアスの具体的な手順を、よろしくお願いします。
>>800 さんの記述からは、何かしらのトリッキーな利用法があるという印象を受けます。
こんばんわ808です。 WM_CLOSEに、 MessageBox入れると上手くいくようになりました。 xボタンを押したときだけですが。 PostQuitMessageや Destroyメソッド呼び出したとき、 IDOKボタン押したとき に、OnCloseを通ってくれないのです。 CloseWindowメソッド呼んでも、最小化するだけなんです。 どがんして終わったらよかとでしょうか?
WM_CLOSEが呼ばれるわけやけん SendMessage(WM_CLOSE)呼べばよかだけやん。 なんね
BITMAP構造体のカラープレーンってなんですか? カラー プレーンの個数は常に1です。とかかれているドキュメントもありましたが、 意味がわかりません。
RGBをプレーンごと別々に表示してた頃の名残かな? よくわからん
PC-9801の4096色中16色は4プレーンだったか。
4GBまでメモリ実装できるパソコンがあるのですが、アプリケーションで2GBのメモリを確保した いのですが、malloc(),new,GlobalAlloc,LocalAllocなどのいずれかで確保できますか? ちらっと見たメモリレイアウトでは、OS(WIN2000Pro)としてユーザーモードとカーネルモード (スーパバイザモード)で各2GBとあったのですが、仮にユーザーモードで2GBだとしたら 当然2GBのメモリを確保することはできませんよね?論理アドレスで連続した2GBのメモリ を確保することは可能でしょうか?どなたか教えてください。
ms-help://MS.PSDK.1033/memory/base/large_memory_support.htm の付近を参照すれ。
インストールされているMSDNのバージョンが違うのか、でてきませんが、IEで ms-help://MS.PSDK.1033/memory/base/large_memory_support.htmといれてもでてきません。 ちなみにインストしてある、MSDNは2001年の1月リリースのやつです。ネット上でのアドレス わかりませんか???またはその部分をコピペしてくれてもうれしいのですが、すみません。
ありがとうございます。読んでいます。 なんとなくWindows2000 Proではだめで、XP Pro、Windows 2000 Advanced Server, Windows 2000 Datacenter Serverでないといけないような気がしてきたのですが、、、気のせいでしょうか? もう少し読んでみます。
TAPIの使い方についてPCで電話をかけ、 会話する方法を解説しているサイト知りませんか?
829 :
デフォルトの名無しさん :03/09/22 18:33
ワロタ アマゾンで今までBuilder買った奴が一人しかいなくて、 そいつが何を血迷ったかエロゲも同時に買ったと予想
なんでAPIスレにそんなの書き込むんだ?
そもそもBCBスレじゃ結構前に既出なんだが‥‥
いろいろ調査した結果わけがわからなくなったのですが、Windows2000Proで(Advanced severでもWINXPでもない)アプリケーションで2GBのメモリを確保することはできますか??? ユーザーモード空間は最大2GBなので2GB取れるはずないのはわかるのですが、 スワップなしのメモリ(論理アドレスでも連続している必要はないえすが)2GB取れますか?
>>824 ,826はどちらかというと4Gを超えるメモリを扱うのに使うものですよね
editbinやリンカオプションの/LARGEADDRESSWAREはどうでしょう
あとスワップ無しはまた別問題のような気がします
SetFocusもSetForegroundWindowもSetActiveWindowも お目当てのウインドウ以外のアプリケーションのメニューが出てる状態だと、 全然アクティブにしてくれないんですが、 何かいい方法ないでしょうか? アクティブにしたいウィンドウのタイトルバーをクリックするとか ALTキーを送った後にアクティブにするとか、対処療法しか思いつきません。 誰か知恵WOO
837 :
デフォルトの名無しさん :03/09/23 21:23
このままSDK使い続けて支障ありませんか。 偉大なぺゾルト様を読み、SDK始めて1年が経過しました。 おかげで、MFCのコードを見ると吐き気が出ます。 このまま、SDKを使い続けても問題ありませんか。 それともMFCに移行したほうが良いですか。 PERLやPHPも便利で使える関数群があったので、普及したと個人的に感じてます。 猫プロの2/3位は、作成できます。 今後の方向性をご教授ください。
俺MFCから入ってSDKに移行してるんだけど?
MFCのデフォルトのアイコンが嫌いだからダメ
MFC使わずにSDKで作るとプログラム書いた,って気になる. でもGUI使うちょっとしたツールならMFC使って手抜きに書いちゃう.
片っ端からVCL漬け‥‥∧||∧
>>840 道具を使うことが目的になっていますね。
843 :
デフォルトの名無しさん :03/09/23 22:15
837です。 MFCは虫の息ですよね。CRTとか表示デバイス? 気になる 841さん C#びるだーですか。でる、まさかC 言語は道具である。使えれば使う、使えなければ使わなくなる。 (C++最高 第2章) そういう意味ではVCL2番目に使える道具ですよね。 1番目につかえる道具 C言語+ぺゾルト本
ATL(WTL)使ってみれば?
MFC使ってるんだよ 仕事なんだよ VCL使いたいんだよ 画面いっぱいなんだよ なんでMFCなんだよ 助けてくれよ
おまけに VCなのに C言語臭いことやってんだよ 規則で決まってるんだよ テンプレート使わせろよ
ノートにVCの開発画面は辛い コード表示部分が少なすぎ
848 :
デフォルトの名無しさん :03/09/24 01:09
849 :
デフォルトの名無しさん :03/09/24 22:34
837です。 >>ノートにVCの開発画面は辛い 鷲は、15TFTでもつらいぞ。 寺ぱっとを立ち上げIDEと同時使用でつかってます。 あと、寺ぱっとタイムスタンプ付で8ポイント印刷して見てます。 sample_test.cpp 2000行 1本勝負です。 背景黒で行番号蜜柑色で//緑 かなり快適です。 VCに罪はなし、ノートでIDEなら16インチSXGAがいい。
850 :
デフォルトの名無しさん :03/09/24 23:48
事情があって、C言語中で標準出力をファイルに接続したいの ですが(リダイレクトではなく)、なにか良い方法はないでしょうか? ・こんなイメージのことがやりたい FILE* TempStdout = stdout; FILE* OutFile = fopen("Temp.txt", "w"); stdout = OutFile; printf("abc"); stdout = TempStdout; close(OutFile); ・事情 1.最初コンソールアプリケーションで作っていたものを、 Windowsアプリに変更した。 2.コンソールアプリケーション時にデバッグ情報をprintf で出力していた。 3.Windowsアプリケーションに持っていったときに2のprintf 出力が見れなくなった。 Dos窓から"appli.exe > Temp.txt"として起動したり色々 試したがダメだった。 4.printfはソース中に無数にあり、全てを変更したくない。 コンパイラはVC6++です。 何か良い方法があればお願いします。
>>850 つい最近、C++スレだか環境依存OKスレだかで似たような話があったはず。
標準ライブラリのdup/dup2は使えないかねー。 コンソールプログラムではよくやるんだけど。 // stdoutのコピーを作っておく int copy = dup(fileno(stdout)); // stdoutの出力先を変更する FILE *OutFile = fopen("Temp.txt", "w"); dup2(fileno(OutFile), fileno(stdout)); printf("write to file\n"); fflush(stdout); fclose(OutFile); // stdouを元に戻す dup2(copy, fileno(stdout)); printf("write to stdout\n");
CreateFile(...)で作成されたファイルハンドルから アクセスモードや共有モードを取得するにはどうしたら良いのでしょうか? もう一つ。 このハンドルからFILE*に変換?するようなAPIってあるんですかね。
>854 両方とも存在しない。
後者は確かにAPIには存在しないけどできないわけじゃない
858 :
デフォルトの名無しさん :03/09/25 15:28
バイトを入れ替えるマクロかAPIを教えてくだ
winsockのhtons, htonl
_swab
861 :
デフォルトの名無しさん :03/09/25 16:05
GetAsyncKeyState()関数が機能しません。 WinXPでは、うまく行くんですが、9x系ではうまく働きません。 開発環境はVisual stdio.netです。 それから、INPUT構造体とかも使えないんですが、何でですか? プリプロセッサの結果では、そもそも展開されていないんです。
862 :
デフォルトの名無しさん :03/09/25 16:34
構造体をプリプロセッサが展開?
863 :
デフォルトの名無しさん :03/09/25 18:09
とんでもないDQSがやってくるな
DQS=ドキュソ? そういや昔なんかの雑誌に「部下:MS-DOSって知ってますか?」 「上司:もすばーがー?」ってネタがあったな。
866 :
デフォルトの名無しさん :03/09/25 21:00
CreateFile -> CreateFileMapping -> MapViewOfFile で EXE イメージをマップして みたんですが ImageDirectoryEntryToData でまともにデータがとれないでつ. MapViewOfFile でとってきたポインタは、ImageDirectoryEntryToData にわたせない もんなんですか?
>>853 これで行けました。
>>855 こちらもこんな感じで行けました。
freopen("Temp.txt", "w", stdout);
私の目的としては上記のどちらでも問題なさそうです。
なお、
>>852 こちらはただいま勉強中です。
レスくれた皆さんどうもありがとう。
>>866 実行ファイルは特別な方法でマップされる(ファイルアラインと
メモリアラインが異なる場合があるとか)
869 :
デフォルトの名無しさん :03/09/26 10:18
InternetOpenUrlなのですがInternetSetOptionでタイムアウトをせっていしているのに 設定したタイムアウトでInternetOpenUrlから抜けてくれません。 何か特別な設定がひつようなのでしょうか?
IEのバージョンによってはタイムアウトが正常に作動しないから非同期モードを使うように。 というのがあった気がするが。
871 :
デフォルトの名無しさん :03/09/26 10:36
>>870 ありがとうございます。
非同期モードに関する内容を書いてるHPを知っていたら教えていただきたいのですが、
873 :
デフォルトの名無しさん :03/09/26 17:38
>>872 かなり参考になりました。
しかしコールバック関数で存在しない串とかを指定しても何故か
INTERNET_STATUS_HANDLE_CREATEDが走ってしまって・・
しかもINTERNET_ASYNC_RESULT構造体のdwResultにハンドルもどきの値が入っているっぽいので、
このハンドルでリードしてもエラーにはなりませんが、当然ながら読み込みは0バイトです。
うまい方法ありますか?
874 :
デフォルトの名無しさん :03/09/26 17:51
あ、よくよくみてみるとINTERNET_STATUS_HANDLE_CREATEDって InternetConnect 関数用っぽいですねこれ、 InternetOpenUrl関数で正常にハンドルを取得するにはコールバックでStatusが 何のときにすればいいのでしょうか?
875 :
デフォルトの名無しさん :03/09/26 23:16
ツリービュー+リストビューのようなコントロールが欲しいのですが、どこかにありませんか? CodeGuruにはあるんだけど、MFCを使ってるっぽいのがネックで…。 ネックになってるのは、私がMFCを使ったことないってこと以上に、 MFCだと初期のWin95では動作しないと聞いたからです。 誰かアドバイスをお願いします。
バージョンは?
878 :
デフォルトの名無しさん :03/09/27 00:42
ウィンドウを作る前に、ウィンドウクラスの拡張領域にデータを書き込むことはできますか? SetClassLongPtr の引数がなぜか hWnd なんですけど、他に何かいい関数はないんでしょうかね?
出来ないよ。 なぜか hWnd じゃなくて、hWnd が必要だからそうなってるんだろう。 ウィンドウが作られたら直ぐに必要になるデータだったら、 CreateWindow or CreateWindowEx の lpParam に データへのポインタをセットして、 ウィンドウ作られるときに呼ばれる WM_NCCREATE or WM_CREATE で CREATESTRUCT 構造体のlpCreateParams(=lpParam)から取り出せばよかろう。 そこで補足メモリに書き込んだら、それ以降のメッセージ処理で使える。
なぞなぞか? 誰か一休さん呼んでこい。
881 :
デフォルトの名無しさん :03/09/27 19:15
ユーザがログオンしていない時だけ重い計算処理を実行するWindows 2000用の サービスアプリケーションを作りたいのですが、方法が分からなく困っています。 GetUserName()でユーザ名を取得し、ユーザがログオンしているか調べる 事を考えたのですが、サービスアプリはSYSTEM 権限で実行されるためか、 ユーザがログオン中であってもそうでなくても、"SYSTEM"というユーザ名 が返ってきてしまいます。いい方法がお分かりの方がいらっしゃいましたら ぜひご教授下さい。
882 :
デフォルトの名無しさん :03/09/27 22:01
EnumWindowStation して OpenWindowStation して GetUserObjectInformation した 結果から判断するのかな。。。 OpenInputDesktop してGetUserObjectInformationすれば十分かな。。
情報どうもありがとうございます!! >> 882 全く私の知らない命令でした。。 まずは、OpenInputDesktopからやってみました。 char DeskName[100]; DWORD WriteByte; DWORD AccessFlag = STANDARD_RIGHTS_ALL | DESKTOP_CREATEMENU | DESKTOP_CREATEWINDOW | DESKTOP_READOBJECTS | DESKTOP_SWITCHDESKTOP | DESKTOP_WRITEOBJECTS | DESKTOP_ENUMERATE | DESKTOP_HOOKCONTROL | DESKTOP_JOURNALPLAYBACK| DESKTOP_JOURNALRECORD; HDESK hDesk = OpenInputDesktop(DF_ALLOWOTHERACCOUNTHOOK, FALSE, AccessFlag); GetUserObjectInformation(hDesk, UOI_NAME, DeskName,100, &WriteByte); こんなかんじでよろしいでしょうか? この方法では残念ながら、ユーザログオン時もログオフ時も UOI_NAME = " " (半角 space 1文字) で同じでした。。 とりあえず、これからOpenWindowStation にチャレンジしてみようと思います。
↑訂正 UOI_NAME = " "(半角 space 1文字) ではなく、 DeskName = " "(半角 space 1文字) でした。。
EnumWindowStation を使ってみたのですが、callback されてくる情報は ユーザログオン時とログオフ時どちらも同じ内容になってしまい、区別 がつかないようです。。。 何かアイデアがございましたら、ぜひ引き続きご教授お願い致します。
>>879 WM_NCCREATE がどんな状況でも一番最初に呼ばれると考えていいんでしょうか?
それより前の処理がどうでもいいものばかりなら、それで行きたいと思います。
>>886 確かバグでWM_GETMINMAXINFOが先に来ることがあったような。
MFCの真似してみたら? (自分にCBTフックをかけてHCBT_CREATEで
乗っ取る)
888 :
デフォルトの名無しさん :03/09/28 12:19
どこで質問していいかわからないので、スレ違いであれば誘導して下さい。 ノートン・アンチウイルスのようにエクスプローラーの ツールバーに常駐するアプリケーションを作成したいのですが 何について調べたらいいのでしょうか?キーワードみたいな ものがあれば教えて下さい。 開発環境は VC2003 です。
>>888 検索キーワードは "C"。
たくさんあるから情報には困らないはず。
>>889 ありがとうございます。
それでも調べてみますが、ほかにも情報がありましたら教えてください。
>>892 ATLの知識は必須ではないよね
無駄な根性があればCやアセンブラでも組めるし
>>892 ありがとうございます。じっくり読んでみます。
>>886 さま、遅レス失礼
それほど Win32 API の経験が深くないのですが:
WndProc にどんな WM_* がどのような順序で来るのか、実地に調べる方法はいろいろ
やったことがあります。普通のデバッガーはこの目的には不適当ですので使いません。
記録をファイルに書いたり、named pipe で送る方法もあり得ます。元が UNIX 系なのもので(^^);
896 :
デフォルトの名無しさん :03/09/28 21:59
お絵かきソフトを作成しようと考えているのですが、表示はウィンドウのDC を使って作ったビットマップを使用するとして、実態の方はユーザーが指定した 色数やサイズを利用したいと考えております。 DCを使用する場合は色数など を合わせたものでないと利用できないと記述されてましたが、実態がビットマップ だとしても自前で描画処理をしてしまわないといけないでしょうか? (ドキュメントを見ると、DCに付属するBITMAPの扱いに特化してるようで 任意のBITMAPに適応したDCの作り方はないようでしたが。)
897 :
デフォルトの名無しさん :03/09/28 22:43
>>895 (878?)
何をやりたいのか分からんが、
WM_*の順序に依存した処理を行うのは悪いアプリケーション。
誰も保障していないのでWindowsのバージョンによって
動かなくなることもありえる。
それでもというなら自分で調べて(spy++で簡単に分かる)
Windowsのバージョン依存を理解したうえでヤレ。
気にしなーぃ、気にしない、っと。
>>887 HCBT_CREATEWND
The system calls the hook procedure before sending the WM_CREATE or WM_NCCREATE
message to the window.
ってあるから、順序の問題は解決しないんじゃない?
MFCのソースは見てないけど、単にWndProc内で条件判断するオーバーヘッドを
取り除いてるだけとか。外してたらすまそ。
SetClassLongPtrしたいなら、とりあえずダミーのウィンドウを
一個作るっていうのはダメなのかな・・・。
(それ以前に、ウィンドウ作る前にSetClassLongPtrしたいっていうのが
よく分からない・・・。RegisterClassでやればいいのに。)
なんかえらく面倒な話になってるし。 フックまで使うような処理かな? ウィンドウが作成されたときに一番最初に ウィンドウプロシージャに飛び込んでくるメッセージは WM_NCCREATE だろう。 将来拡張されるかもしれないけど、今作っているアプリは 将来拡張されるメッセージの事は知らないので 間違って処理してしまうことはないだろう。 バグはバグ。ウィンドウズのバグなら認識してから対応しても 良いのでは? ちなみに、この方法で 3.1 の時代から実装しているけど 問題になったことは無いな。 このシチュエーションではWM_GETMINMAXINFOは処理してないので、 これについては分からない。このメッセージだけ個別対応する方法もあるし。
そろそろ収束しそうな感があるけど,蛇足を一つだけ。 static InternalObject *obj = 0; if (msg == WM_CREATE) { obj = new InternalObject(); return 0; } if (msg == WM_GETMINMAXINFO) return obj->work(); // うほっ!!!!!!!!11ぬふあ こんなコード書いてたら落ちるんで要注意ですね。 もちろん,常識あるプログラマならば if (msg == WM_GETMINMAXINFO) if (obj) return obj->work(); else return 0; みたくチェックするのは当たり前,と・・・
>>900 > before sending the WM_CREATE or WM_NCCREATE
でなんで解決しないの?
MFCが使ってるからMicrosoftはこれを破壊するような
仕様変更は(しない|できない)と思われ
>>901 補足メモリにWM_NCCREATEでthis入れて以降の
メッセージで使うという実装だと、
その前に別のメッセージがきたらディスパッチできない。
壁紙にhtmlを指定する方法を教えてくれ SystemParametersInfo じゃダメだった…
>>901 漏れもフックは使ってない。
でも、WndProcでNCCREATEorCREATEに個別対応するなら、
結局やってることはフックと同じこと。どっちでもいいんじゃない?
>>903 全てのウィンドウメッセージの前に呼ばれるということが保証されてる
というのならまだしも、フックでメッセージの順番の問題を解決するのは考え方として変だと思う。
NCCREATEorCREATEが送られたどうかを判断するには
ウィンドウのextra memoryに0以外の値(ウィンドウをクラスで
実装してるんなら、CREATESTRUCT経由でthisとか)を書き込めばいい。
WndProcのGetWindowLongPtrして、戻り値が0の場合は初期化がまだだから、
DefWindowProcでも呼んどけばいいのでは。
っていうか、こんなのあえて書くこともないけど。
まちがいた。 ×WndProcのGetWindowLongPtr ○WndProcでGetWindowLongPtr
最初にくるメッセージが何であれ、 ATLのメッセージハンドリングっぽくすればいいだろうに。 ... wcex.lpfnWndProc = WndProc1st; //最初のコールバックを設定。 ... Mgr::Instance().SetData( ::GetCurrentThreadId(), this ); // データ一時保存 CreateWindowEx( ... ); // ウィンドウ作成 ... LRESULT CALLBACK WndProc1st( .... ) { void * p = Mgr::Instance().GetData( ::GetCurrentThreadId() ); // データ取得 SetWindowLongPtr( hWnd, GWLP_USERDATA, (LONG_PTR)p ); // なんか処理 // WndProc を本来のものに変更 SetWindowLongPtr( hWnd, GWLP_WNDPROC, (LONG_PTR)WndProc ); return WndProc( hWnd, uMsg, wParam, lParam ); } LRESULT CALLBACK WndProc( .... ) { ... // なんか処理 };
志村!thisー!
910 :
デフォルトの名無しさん :03/09/29 23:11
質問をさせていただきたいと思います。 現在、プログラミングの練習も兼ねて、フリーソフトとしてよく出回っているような デスクトップの壁紙チェンジャーを作りました。壁紙チェンジャーの作り方自体は多くの ホームページで取り上げられている為、すぐに作成することが出来ました。 SystemParametersInfo( SPI_SETDESKWALLPAPER , 0 , FileName.c_str() , 0 ); ↑を用いました。 その後、タイマーを使って高速に壁紙をチェンジすることで、擬似的なアニメーション壁紙 にしようとしたのですが、デスクトップの壁紙をチェンジ(リフレッシュ?)する毎に、 壁紙だけでなく、上にかぶさっているフォルダやファイルのアイコンまでリフレッシュされて しまう為、アイコンがちらついてしまいます。(壁紙はちらつきません) そこで、かぶさってるアイコン等は除いて、純粋に壁紙のみをリフレッシュする方法はないのでしょうか? ネットでは見つけることが出来ませんでした。 開発環境はXP:C++Builder6です。お分かりになる方がいらっしゃいましたら どうかよろしくお願いいたします。
>>910 そんなマニアックな機能が何の練習になるのかは知らないが、
GIFを壁紙に設定出来ないかな。
いくらなんでもタイマーで壁紙を再設定されるのはイヤだ。
>911さん GIFだと ・アクティブデスクトップにする必要がある(?) ・(アクティブデスクトップにすると)マウスでドラッグする範囲選択 が出来なくなる(複数のアイコンをマウスで選択するとき等) ・色数が制限される ので断念しました (^^; たしかにマイナーですよね。 私は夜景が好きなので夜景画像を壁紙にしてるのですが、 例えば、東京の夜景を壁紙にしたときに、ビルの角についている赤色灯が 点滅したりするといい感じかなぁ・・・と思い、挑戦しました。
そーいやAVIを壁紙にするとか無かったっけ?
>913さん AVIを壁紙にするツールはありますね。 まぁ私の場合、赤色灯を点滅させたいだけなので、 画像ファイル数枚をスライドショーみたいにしてループさせればよいのですが、 AVIにしてもスライドショーにしても、 ・マウスでドラッグする範囲選択が出来なくなる・・・ のが痛いですね。 でも、その程度のデメリットは我慢する必要があるのかもしれませんね(泣)
Windows95 以降のデスクトップは ListViewCtrl だから極論を言うと こいつをフックしたら理論的には何でも出来るはずだが…
GetDC(NULL)で描画する手もあるナ。
InternetExplorere もフックしてるけどな。
919 :
デフォルトの名無しさん :03/09/30 05:30
色々、動作を記録して自動でやってくれるソフト(AutoClickとか)を試したんですが、 なぜか、目的のVBA(エミュ)でEnterキーが認識されなかったので、(テキストファイルとかはOK) 自分で作ろうと思いたち、やってみているのですが、序盤からいきなり躓きました。。 int main() { mv_mouse(32000,60000); click_left(); for(i=0;i<3;i++){ keybd_event(0x4D, 0, 0, 0); keybd_event(0x4D, 0, KEYEVENTF_KEYUP, 0); } return 0; } と、こんな風に書いてみたんですが、画面に開いているテキストファイルに mv_mouseでフォーカスして、(これは成功)文字を入力しようと試みてるんですが 全く入力されません。 何が悪いかとかわかるかた、教えてください。 環境は、XPでコンパイラはbccです。。
>915-918さん ご指摘いただいたキーワードまわりをいろいろ調べてみました。 どうやら私がやろうとしていることはプログラミングの練習としては 順序が間違っているようですね(^^; たしかに実現できたとしても、かなり乱暴なソフトになってしまいそうです。 もうすこしハードルの低く、無難なものから積み上げていこうと思います。 今回は非常に勉強になりました。 ご助言くださった方々に感謝いたします。
921 :
デフォルトの名無しさん :03/09/30 10:07
コンパイラのプロジェクト設定に、 「言語-ロケールID-0x411-日本語」みたいなのがあります。 多国語対応したい場合は、英語でしょうか? それとも、言語を指定された時点で実行時にロケールID変更?
922 :
デフォルトの名無しさん :03/09/30 10:10
JISをシフトJISに変換するAPIを教えてください
あれから全然進みません。 かなり考えたんですが、sendInputを使ってみようとも試みたんですが ググって見つけた例文がVBのばかりだし、どなたかヒントだけでも 教えてください。。
926 :
デフォルトの名無しさん :03/09/30 15:45
リストビューコントロールで、 項目が選択されたときボタンを有効に、 項目の選択が解除されたらボタンを無効にしようとしているのですが、 調べた限りでは、リストビューコントロールに、 項目が選択されたという通知メッセージがないようです このような処理を実現するには、 どうしたら良いでしょうか?
>>920 壁紙だけど、SystemParametersInfo()で、設定を伝播させないという
フラグがあったような気がする…
そのフラグをセットしておくと、たしかに壁紙は変更されて表示されるが
設定が変更されたというイベントが他のウインドウに伝わらないので
たぶん再描画されないと思う
また、その副作用(?)として、セットした壁紙がウインドウズの
設定ファイルに保存されないので、次回再起動すると、壁紙が
別のものになっている(か無いか)とかいう経験をした気がする
気がする…ばかりでゴメン
うまくいったら結果を教えて。おれも興味あるので。
その壁紙の上で作業するとき、マシンパワーを贅沢に使いそうだね。
ここらへんがいわゆるスクリーンセーバ(もどき)と違う悩みの種かな
>>926 通知メッセージはNM_CLICKでOK
lParamがLPNMLISTVIEW構造体なので、
そのiItemメンバを調べる。-1なら選択解除。
>925 ドライバ制作からどうぞ
>>928 レスありがとうございます。
試したところ、
NM_CLICKだけではなく、
キーボードで選択/選択解除した場合に、
NM_KEYDOWNの処理が必要となりそうです。
他に項目を選択する方法を思いつかないので、
これでいいとは思うのですが・・・
931 :
デフォルトの名無しさん :03/09/30 17:41
FormatMessageなんですけど、 char arg1[] ="aaa"; LPVOID arg[] = { arg1 }; char buff[100]; FormatMessage( FORMAT_MESSAGE_FROM_HMODULE | FORMAT_MESSAGE_ARGUMENT_ARRAY, NULL, IDS_STRING, 0, buff, 100, (va_list *)arg ); とすると、GetLastError() = 1813(指定されたリソースの種類がイメージ ファイルに見つかりません) で失敗します。どうしてでしょうか? CString buff; buff.FormatMessage( IDS_STRING, arg1 ); は成功しました。
なんでNULLを渡してるねん そこにはメッセージリソースを含むDLLの モジュールハンドルを渡すんだよ
自己解決。CWinApp::InitInstance (←MFC使ってます)で呼んでたのが
敗因っぽいです。他のとこに書いたら成功しますた。
>>932 >NULL を指定すると、現在のプロセスで動作しているアプリケーションの
>イメージファイルを検索対象にします
お騒がせしました。
935 :
デフォルトの名無しさん :03/10/01 10:56
非同期でInternetOpenして InternetOpenUrlでInternetReadFileを行うとちゃんとソースを取得できません。 トレース実行するとそれなりにとれているので、InternetReadFileの前に待ち時間を入れると ちょとはマシになるのですが、InternetReadFileが終ったってどう判断すればいいのですか? コールバック関数でINTERNET_STATUS_RESPONSE_RECEIVEDでイベントをアレすると InternetOpenUrlの時に1回くるので、いまいち判断がつかないので・・
>>935 1.非同期ならInternetReadFileExを使え。
2.このスレのログを全部読め。
937 :
デフォルトの名無しさん :03/10/01 11:22
>>936 ううおおおおおお!!!
InternetReadFileExってAPIあったんですかあ!!
これググったんですけどプロトタイプがわからないです・・
教えてください
938 :
デフォルトの名無しさん :03/10/01 11:26
939 :
デフォルトの名無しさん :03/10/01 11:59
>>938 いやごめん日本語のアレでググったらそれでない、んで後から全体でググってそれでてきた(;´Д`)
コンパイルは通ったんだけどどっかに使用例ってないですかねこれ
942 :
デフォルトの名無しさん :03/10/01 18:32
Win32で作ったEXEは、Pocket PCで動きますか?
943 :
デフォルトの名無しさん :03/10/01 19:10
RegisterClassEx()で使われるWNDCLASSEXのそれぞれのメンバは すべて用意しないといけないのでしょうか? 0にしておくことで、ウインドウズのデフォルトまかせにすることは できないのでしょうか? hIcon,hCursorなどは、デフォルトのままでいいや、と思うことが けっこうあります。
944 :
デフォルトの名無しさん :03/10/01 19:19
>>942 Win32用に作ったEXEは動かないよ。
該当CPUのPocketPC用にWin32で作ったものなら動く。(っていうか普通そうやって作る)
>>944 じゃ、コンパイラは限られてんだ。
BCBは駄目かい?
946 :
デフォルトの名無しさん :03/10/01 19:21
947 :
デフォルトの名無しさん :03/10/01 19:44
>>927 さん 返事遅れてすいません。進んでませんが経過報告です。
>壁紙だけど、SystemParametersInfo()で、設定を伝播させないという
>フラグがあったような気がする…
SystemParametersInfoの第4引数をNULLにすると、iniに記録されず、
他のアプリケーションにも通知しない・・・とあります。
しかし、そうやってもちらつきます。
GetDC(NULL)を用いる方法は、SysListView32やウィンドウよりも手前に
描画する為、デスクトップのアイコンやウィンドウが隠れてしまいます。
SysListView32に描画する方法も、アイコンが隠れてしまう(と思われます)。
残された道はListViewにフックをかけてどうにかするしか思いつきません。
メッセージを横取りして、再描画させなく出来ればいいんですけどね。
プログラミングを始めて1週間も経ってないので、まだイマイチ把握できてません。
初めて作るソフトとしてはふさわしくなさそうです(^^;
949 :
デフォルトの名無しさん :03/10/02 08:37
Win32ベースのPocketPC用コンパイラは、DEV.NETだけ?
950 :
デフォルトの名無しさん :03/10/02 09:07
>>949 プラットフォームによるよ。
PocketPC2002なら、eVT3.0だし。
951 :
デフォルトの名無しさん :03/10/02 10:34
非同期でInternetReadFileExを使ってのやり方はなんとなくわかったのですが、 普通にHPから非同期でソースを取得する場合InternetConnectの第2引数の サーバー名には何を指定するのでしょうか? FTPではないので
サーバー名に決まってるだろヴォケ
953 :
デフォルトの名無しさん :03/10/02 11:39
ああすまんこのちんかすめ InternetCrackUrlでアレしてホスト名アレしたらでけたわ
ああす まんこ の ちんかす め?
>>943 LoadIcon(NULL, IDI_APPLICATION)
LoadCursor(NULL, IDC_ARROW)
でシステムのアイコンとカーソルが使われるが。
ちなみにカーソルのデフォルトは砂時計だから
設定しないとちょっと困ると思う
ふと思ったんですが、CALLBACK関数ってウィンドウプロシージャァのほかに 何種類くらいあるんでしょうかねぇこれってトリビアにならないでしょうか
957 :
デフォルトの名無しさん :03/10/02 13:20
プログラム内で、別のアプリケーションを 別のユーザ/パスワードで実行させたいのですが、 そのようなことが可能なAPIはありますでしょうか? 動作的にはRunasコマンドをイメージしています。 Runasでは実行時にパスワードが求められてしまう (Runasコマンドの引数としてパスワードは指定できない)のと、 APIで可能であればそちらを使用したいと思いますので…… もし何かご存知の方おられましたら、ご教授いただけますようお願いいたします。。
なんでそこでrunas.exeをDependency Walkerで見てみる、ぐらいのことはしないのか。
>>958 CreateProcessAsUser()も知らないの?
>>959 Windows2000のrunas.exeが使用しているのはCreateProcessWithLogonWだが。
お返事ありがとうございます。 早速CreateProcessAsUserを調べてみて、 確かに別ユーザで実行されていることを確認しました。 ありがとうございました。 CreateProcessWithLogonWについては、 MSDN Onlineにはあるのですが、VC++6.0ではwinbase.hに定義されていませんでした。。 今更ながら、環境についての記述を忘れていて申し訳ありません。 ちなみに環境はWindowsXP+VC++6.0を使用しております。 ……そして、CreateProcessAsUserで実行したプログラムが エラーで落ちているのはまた別の話か……精進します。。 _| ̄|○
>>948 がんばってくれ。
フックを使うよなウインドウズプログラムは俺も経験ないよ。
ちらちらするというのは、ウインドウズがシングルバッファで
壁紙を再描画しているからかもしれない。よくしらないけど。
たしかに、壁紙を激しく替えるなんて想定外、というのは妥当なんだろう。
初めてのだいざいには大きすぎる規模のプログラムかも。
とりあえず今は保留でもいいかもね。
でもさ、自分が欲しいものを自分で作るのってたのしいよね。
こういうときって、けっこう簡単に自分の限界(とおもってたところ)を
さっくり突破したりするよな…経験的に。
動機とかモチベーションとかって、でかいよな。
>>955 デフォルトが砂時計というわけではなく、カーソルが変化しないだけだと思う。
ウィンドウ枠でカーソルを矢印にして、ウィンドウ上に持ってくると矢印のままだし。
964 :
デフォルトの名無しさん :03/10/03 15:08
MACアドレスを取得したいのですが、 95系、NT系のどちらでも使用できるAPIってありますでしょうか?
966 :
デフォルトの名無しさん :03/10/03 19:45
このスレでいいのかどうか、アレなんですが。 シェルエクステンションのDLL作ってるんですけど regsvr32 /u しても、DLLがしばらく(最悪再起動するまで)「使用中」とかいって削除できませんよね? 明示的にアンロード(?)して、即削除可能にするってできないんでしょうか?
WIN64APIまだ?
>966 AlwaysUnloadDLL
969 :
デフォルトの名無しさん :03/10/03 22:23
オンラインゲームなどでよくある簡単な個人認証を実装 したいのですがサンプルや情報のあるサイトか書籍を ご存じでしたら教えてください。 よろしくお願いします
↑マルチに付き放置推奨。
971 :
デフォルトの名無しさん :03/10/03 23:23
>>970 丸一日たったけどダメだったので、仕方なかったのです
急なリクエストがはいっちゃって、勘弁してください
どなたかヒントお願いします!
>>971 マルチ:
何の状況説明も無く複数のスレに同じ質問を投げる。
それぞれのスレに回答がつくが、一番早かったところ意外は徒労に終わり、大概礼も言われることなくむなしく流れていく。
移動:
前のスレでレスがつかなかったので、移動する旨と移動してきた旨をちゃんと書く。
前スレでその質問を見たやつも移動先のスレに来て回答すればいいので労力が無駄になることは無い。
無視されてるMFCスレの237が良い例だな。
切羽詰った状況を自分のマナーとモラルが無いことのいい訳にするなや。
>>968 それ、レジストリのヤシでしょ?効果なかった。
>973 俺の場合は効果はあったけどな。 エクスプローラがそのDLL使ってんじゃない? デバッグするんだったらIEからシェルエクステンションを ロードするようにすれば少しは違うかも
とりあえずエクスプローラ落としてみるってのはどうだ?
976 :
名無し@沢村 :03/10/04 12:50
977 :
デフォルトの名無しさん :03/10/04 21:59
本人も謝ってるんだからさ、誰か969に答えてやったらどうだ? 知っていたら俺が答えてやってもよいんだけど、 誰かヘルプよろしく
本人キタ━━━━━(゚(゚∀(゚∀゚(☆∀☆)゚∀゚)∀゚)゚)━━━━━!!
自演までマルチとは。
>>981 ヘッダが分かったら,後はdataチャンクにPCMのバイトストリームが入ってるだけ。
ストリームフォーマットは,リトルエンディアンでチャンネル順にパックされてる。
とりあえず,PCM各サンプルのプロット -つまり,波形の表示- からはじめたら?
984 :
デフォルトの名無しさん :03/10/05 00:09
ある子ウィンドウが、親ウィンドウの移動に追従するにはどうすればよいのでしょうか。 親ウィンドウのタイトルバーをドラッグして移動する際に、子ウィンドウも一緒に移動して欲しいのですが・・・。 よく見かける、アクティブウィンドウのタイトルバーに座って、移動も一緒に追従するアプリはどのようにして実現しているのでしょうか。 開発環境はWindows Me,VC++6.0です。 よろしくお願いします。
>>984 ・フックしこんで対象ウィンドウにWM_WINDOWPOSCHANGEDあたりが来たら
それに合わせて自分も移動する。
・定期的に対象ウィンドウの位置を調べて(以下略
できました!
>>985 さん超感謝ですヽ(TーT)ノ
本当にどんなメッセージを使うのか、見当もつかなかったので・・・
今回はウィンドウが親子関係なのでフックしたりはしなくても済みました(´ー`)
親のWM_WINDOWPOSCHANGEDを受けて、子にウィンドウが移動した旨、伝えることで実現できました。
有難うございます。
次スレ立てるんだったら、そろそろかな。
立てるときは
>>2 だけでなく
>>904 も夜露氏句
>>982 >>983 レスありがとうございます。
>>983 その、プロットですが手順の目処もたちません。スキルが高くないので・・・。
どこか勉強できるページなどないでしょうか?
どうぞよろしくお願いします。
>>989 ひょっとしてwaveファイル云々じゃなくて、
ウィンドウに表示する方法が分からないってこと?
よーし、ちょっくら次スレ立ててくるわ。
995 :
デフォルトの名無しさん :03/10/05 13:52
# 質問内容はノータッチ...
>>995 次スレが立ってるから、あらためてそこに投稿されるとよいかと。
梅
1000
1000は俺
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。