トップページ⇒tech
1001コメント283KB

Win32API質問箱 Build19

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
スレ立てるまでもない、Win32APIについての質問はこちらへどうぞ。
ただし、最新スレくらいは質問する前に検索してくれ。というかしろ。

過去スレなどのリンクはたぶん>>2-5くらい。
0153デフォルトの名無しさんNGNG
>>152
韓国人かよ
0154デフォルトの名無しさんNGNG
一台からやってもDOS攻撃は意味がない。
0155152NGNG
>>154
ありがとうございます
そういえばそのようなこと聞いたことがあったような気がします
では、作っても意味がないのでしょうか?
OS上の限界なのでしょうかね?

window一つでもwindow複数でもサーバーの負担は変わらないのかな

分かりました、別の方法を考えてみます
0156デフォルトの名無しさんNGNG
DDoS推奨。てかなんのスレだここは
0157152NGNG
>>156
DDosと言う方法があるんですね
さっそく調べてみます
0158デフォルトの名無しさんNGNG
最近の朝鮮人は2ch派生の顔文字使うらしいよ。NAVERでフレームやってた奴らが広めたらしい。
0159デフォルトの名無しさんNGNG
スレが違う方向に逝ってしまう予感・・・
0160デフォルトの名無しさんNGNG
REM ---DDOS.BAT---
:A
CURL http://www.2ch.net/ > NUL
GOTO A
REM ---EOF---
0161デフォルトの名無しさんNGNG
msdn に、

Requirements
Routine Required header Compatibility
malloc <stdlib.h> and <malloc.h> ANSI, Win 98, Win Me, Win NT, Win 2000, Win XP

と書いてあるのですが、malloc は win95 で使えないんですか?
0162デフォルトの名無しさんNGNG
んなーこたぁない。
0163デフォルトの名無しさんNGNG
VC++7.1とかだとそもそもWin95が対象外。
0164デフォルトの名無しさんNGNG
HWND button = CreateWindow("BUTTON","Hello",WS_VISIBLE | BS_PUSHBUTTON, ... )
として第8引数にもNULLを指定し、あとでSetParentとSetWindowLongPtr
で親のHWNDとWS_CHILDを追加しているのですがうまくいきません

DWORD button_style = GetWindowLongPtr(button,GWL_STYLE);
button_style |= WS_CHILD;
button_style ^= WS_POPUP;
SetWindowLongPtr(button,GWL_STYLE,button_style);
SetParent(button,window);

ボタンに指定したのと同じ位置,サイズ,キャプションでウィンドウが表示され、その中に
ボタンが表示されてしまいます
ボタンの親をあとから指定することは不可能なのでしょうか?
0165デフォルトの名無しさんNGNG
俺もSetParentしてえ
0166デフォルトの名無しさんNGNG
>>165
イ�`
0167デフォルトの名無しさんNGNG
SetParent(俺, 隣のおねいさん);
0168デフォルトの名無しさんNGNG
>>167
まずハンドルを取得汁
0169デフォルトの名無しさんNGNG
>>167
養子縁組を申し込めばOK
0170デフォルトの名無しさんNGNG
養子縁組に必要な書類==ハンドル
0171デフォルトの名無しさんNGNG
養子縁組に必要な条件
(>>167).年齢() < (>>167).隣のおねいさん.年齢()
0172デフォルトの名無しさんNGNG
メッセージ等を使わずに
SHIFTキーが押されているかどうかをチェックするにはどうすればいいですか?
0173デフォルトの名無しさんNGNG
GetKeyboardStateとか
0174デフォルトの名無しさんNGNG
GetKeyState
0175デフォルトの名無しさんNGNG
GetShiftKeyState
0176デフォルトの名無しさんNGNG
GetAsyncKeyState
0177デフォルトの名無しさんNGNG
LoadBitmap で読み込んだビットマップのピクセルに直接アクセスするには、
どうしたらいいですか?
背景色を GetSysColor(COLOR_BTNFACE) に置き換えたいのです。
0178デフォルトの名無しさんNGNG
GetPixelVとかSetPixelVとかで出来るのでない?
0179デフォルトの名無しさんNGNG
Get/SetBitmapBits()
つーかここで〜するAPIはなんですか?とか言ってるヤツでVC使いなら
インテリセンスでそれらしいの探せ
0180デフォルトの名無しさんNGNG
FolderのContext Menu Handlersに自作アプリを追加したのですが、
エクスプローラの左フォルダーツリーから呼び出された場合と
右のファイルリストから呼び出された場合で追加可能アイテム数がかなり違います。
(左約3万、右約140)
この差はどこから来るのでしょうか?
また右の場合の項目数を増やす事は出来ませんでしょうか?
0181デフォルトの名無しさんNGNG
>>179
msdnの目次のほうがいいとおもいます
0182デフォルトの名無しさんNGNG
>>179
今は、SetDIBits()では?
0183デフォルトの名無しさんNGNG
MultibyteToWideCharのコードページ、
CP_ACPとCP_OEMCPを使っている例が多いのですが、
どっちを使うべきなんでしょうか?差がわかりません。
0184デフォルトの名無しさんNGNG
日本語環境ならCP_ACPでおげ
0185デフォルトの名無しさんNGNG
thx!
0186デフォルトの名無しさんNGNG
明示的にSJISから変換したいなら932が正解な気がするが。
0187デフォルトの名無しさんNGNG
Find*Fileのファイル名から変換するのに使用してるんです
932決め打ちだと日本語環境以外で(使うかはともかく)不具合出ませんか?
0188デフォルトの名無しさんNGNG
>>187
システムのコードページを得て変換するのが正解のような。
0189デフォルトの名無しさんNGNG
それなら、CP_ACP で正解。
0190デフォルトの名無しさんNGNG
OEM変換する必要がある環境って触ったこと無い人多そう。
0191デフォルトの名無しさんNGNG
GetDlgItemIntってint型しか使えないんだけど、int型の範囲超えちゃうような
数値とかの場合はどうしてるの?
0192デフォルトの名無しさんNGNG
>>191
文字列で取って、自分で扱ってる多倍長整数とかその他の形式に、自分で変換すればいいだけでは?
0193デフォルトの名無しさんNGNG
WM_MOUSEWHEELはwin98でも使えるのにWHEEL_DELTAとかは
_WIN32_WINNT>=0x400でないと定義されないのはなぜじゃ!
0194デフォルトの名無しさんNGNG
もじれつ
0195デフォルトの名無しさんNGNG
もりぜつ
0196デフォルトの名無しさんNGNG
>>192
文字列をdouble型に変換するのってどうするんでしたっけ?
0197196NGNG
atof関数だったかも
0198デフォルトの名無しさんNGNG
atofはfloatだべ
strtodだ
どっちにしろAPIではないがな
0199デフォルトの名無しさんNGNG
VCではdoubleだが > atof
0200デフォルトの名無しさんNGNG
atoi64 は、VC独自仕様?
0201デフォルトの名無しさんNGNG
コマンドの標準入出力をゲットしてなにかしらこねくり回そうかなーと思っているんですが、
CreatePipeとか使って標準入出力を他のHANDLEにパイプすることには成功したんですが、
どうもリダイレクトとかパイプとか使用してると、挙動がかわるコマンドってあるじゃないですか?(lsとか)

この挙動がパイプつなげる前と変わらないようにしたいんですが、なんか方法ってありますかね?
正確にはわかりませんが、自分の憶測だと、そういうコマンドって、
内部で、出力先を調べて、結果を変えてると思うんですが、
その調べるときの出力先をダマして教えてしまうような方法がないかなーと思うんですが…
0202デフォルトの名無しさんNGNG
atof()はひょーじゅんでdoubleだろ

ていうかANSI以前では引数だの戻り値だのにfloatだのcharだのといった
型は使えなかったんじゃないか確か
なんでもint, long, double, ポインタ
0203デフォルトの名無しさんNGNG
>>201
むり。
0204デフォルトの名無しさんNGNG
>>201
Unixなら、psuedo ttyを使ってそういう類の仕事をやることがある
はず
tclでかかれたexpectとかはそーゆー目的のツール
のはず
0205デフォルトの名無しさんNGNG
>>202
引数は、
float → double
char,short → int
というルールだけど、
戻り値はなんでもアリだった気が。
0206デフォルトの名無しさんNGNG
>>205
原理的にはできるとおもう
プロトタイプなんてモンも無かったし引数はとりあえずスタックに
プッシュするだけだから、ああなってただけだと思うから

でも、実際にfloatやchar戻してる例なんてみたことないよ
0207デフォルトの名無しさんNGNG
>>201
リダイレクトさせるんじゃなくて、
フッカ潜り込ませて、そのプロセスのコンソール入出力をぶん取る方が確実と思うが。
0208201NGNG
>>207
フッカというとHookerのことですか?
フックというとSetWindowsHookExぐらいしかしらないんですが
どんな感じでやるんでしょう?
0209デフォルトの名無しさんNGNG
部分的なITEMIDLIST(IEnumIDList::Next()で列挙した奴)と
そのITEMIDLISTの親のIShellFolderから完全なITEMIDLISTを得る方法はないでしょうか?
0210デフォルトの名無しさんNGNG
子ウィンドウにDestroyWindowすると親ウィンドウも破棄されてしまうのですが
子ウィンドウだけを破棄する方法はありますか?
子ウィンドウはWS_EX_NOPARENTNOTIFYを指定してます.子ウィンドウを破棄する前に
SetParent(hChild,HWND_DESKTOP)として親を変えてもだめでした
0211デフォルトの名無しさんNGNG
破棄されないよ
0212210NGNG
すいませんあほでした
子ウィンドウのWndProcのWM_DESTROYの中でも
PostQuitMessage(0)していました。。。。。。
0213デフォルトの名無しさんNGNG
>>209
自力で結合させる以外の方法はなかったはず
これの下の方
ttp://www.kab-studio.biz/Programing/Codian/ShellExtension/06.html
0214デフォルトの名無しさんNGNG
とある拡張子に関連付けられたアイコンがあるファイル名と
インデックスを取得するだけのAPIってないでしょうか?

シェル拡張でIExtractIconを利用してるんですが、そこで上書きする
アイコンのロードに失敗した時に、元の奴を表示したいのです。
ExtractAssociatedIconだと、その中でさらにIExtractIconのメンバ関数を
呼び出してStackOverFlowになってしまうみたいで、Explorerが落ちちゃいます。

やっぱり、レジストリを検索するしかないのでしょうか?
0215デフォルトの名無しさんNGNG
>>214
そうですね。
シェルエクステンションを使うということは、しごく当然ですが、シェルからの取得も
そのエクステンションを使用するわけなので、、、

もっとも、アイコンのロードに失敗するという状況自体がおかしいという考えもありますが。
0216デフォルトの名無しさんNGNG
>>214
漏れと同じ事をしようとしている希ガス・・・
0217デフォルトの名無しさんNGNG
>>215
レスありがとうございます。

> アイコンのロードに失敗するという(略
上書きするアイコンは、外部ファイルを利用してアイコンをロードするって
ことをやってるので、一応失敗する可能性もあるかな〜と思いまして。

前の書き込み後、色々調べてSHGetFileInfo()でSHGFI_ICONLOCATIONを
指定する方法も試してみたんですが、バグなのか呼び出し方に問題が
あるのか、どうやっても取得できませんでした。

他に方法もなさそうなので、レジストリ検索にしときます…(´・ω・`)
0218デフォルトの名無しさんNGNG
ファイルがショートカットかどうか判別するAPIはありますか?
拡張子がLnkやUrlで判別するしかない?
0219デフォルトの名無しさんNGNG
>>218
IShellLink Interfaceを使う
0220デフォルトの名無しさんNGNG
C言語なら俺に聞けのスレでおなじ質問をしたんですがスレ違いとのことでこのスレを紹介されてきました

C言語でWindowsを再起動させるプログラムを作りたいんですけどどうすればいいですか?
0221デフォルトの名無しさんNGNG
とあるウィンドウのハンドルを取得できたとして、
そのプロセスのコールバック関数から
ウィンドウの一番下にメモかリストボックスを追加して
その上にリサイズ用のバー(スプリッター)を追加したいのですが、
そのようなことは可能でしょうか。
また、それを行う場合どういった方法でやればいいのでしょうか。
0222デフォルトの名無しさんNGNG
>>220
ExitWindowsEx
0223デフォルトの名無しさんNGNG
>>221
よくわからんのだが、既存のウィンドウの下部に外部のプログラムからそういうウィンドウをつけたい、ということかな。
0224デフォルトの名無しさんNGNG
>>223
>既存のウィンドウの下部にそういうウィンドウをつけたい
これはその通りです。

>外部のプログラムから
プラグインのようなものから、ということです。
プロセス・スレッド的にはウィンドウのメッセージループと(たぶん)同一です。
0225デフォルトの名無しさんNGNG
不特定多数のエディット
(数が状況によって変化するようなコントロール)
を作成するプロシージャがある場合に
また別のウィンドウのプロシージャで
任意のエディットに入力された文字列を受け取るには
どうしたらいいでしょうか?
外部のHWND型配列にそのエディットのハンドルを格納しておいて
そのハンドルを使ってGetWindowTextで呼び出すという
安っぽい方法なら思いつくのですが・・外部変数使ってるし・・
外部変数に頼らないまたは一般的な方法ありましたら教えてください
おねがいします。
0226デフォルトの名無しさんNGNG
>>225
俺なら共用データクラスを作るが。MFCならCDocumentにつっこむ。
HWNDではなく、文字列そのものを。
てか、スレ違い。
0227デフォルトの名無しさんNGNG
即レスどもです

共有データクラスってなんですか?
ググッってみたのですがヒットしませんでした
ちなみにMFCもまだ
使えませんT T
Win32APIもCも猫やら本やらで勉強中の身で。

てかスレ違いですか!
このような問題に対処する方法は
Win32APIに限られたものじゃないから ってことですか?
0228デフォルトの名無しさんNGNG
>>225
文字列を受け取りたいエディットコントロールのIDがわかるなら
GetDlgItemText()を使えばHWNDの配列なんて必要ないよ。
0229225NGNG
>>228さん ありがとうございます
なんだか前よりずっと綺麗にまとまりそうです

そこでまたまた初心者質問で申し訳ないのですが
親ウィンドウのWM_COMMAND以外にmenuIDが参照されるタイミングを
知らないので思ったのですが
兄弟ウィンドウの中でかぶらなければ
menuIDはどんな値にしてしまってもいいんでしょうか
多くのコントロールを必要とするプログラムの場合
その値を普通はどうやって決めるのでしょうか
0230デフォルトの名無しさんNGNG
兄弟ウィンドウでかぶらなければ適当に決めてよい
0231225NGNG
そうですか!
ありがとうございました
0232デフォルトの名無しさんNGNG
Win32API 直でPG組んでる人って、まだ多いん?
0233デフォルトの名無しさんNGNG
もうとかまだとかいう話じゃねーと思うんだが。
0234デフォルトの名無しさんNGNG
あながち多いん?
0235デフォルトの名無しさんNGNG
ぞんがい多いよ
0236デフォルトの名無しさんNGNG
オブジェクト思考とか、イベント駆動型についていけない人達と思っていいか?
0237デフォルトの名無しさんNGNG
Win32APIの窓プログラミングを非イベント駆動で組む方法を教えてください。
0238デフォルトの名無しさんNGNG
そうやって優越感に浸っているのがいいよ。
0239デフォルトの名無しさんNGNG
オブジェクト指向と何の関係が...
自分は進んでいると思っているキチガイの中の人か?
0240デフォルトの名無しさんNGNG
イベント駆動ってメッセージ処理そのものなんじゃ…
0241デフォルトの名無しさんNGNG
236は無知でド低脳な人だと思っていいか?
0242デフォルトの名無しさんNGNG
直の方がプログラムの流れが一目瞭然で良いが、
MFCを覚えてからは、こっちの方が楽で良いな。
でも旧来のやり方が好きな人もいるでしょうし、人それぞれで。
Win32API直PGを経験してる方が、MFCなどに移ってもなにかと有利だと思う。
0243236NGNG
大量(プゲラ
0244デフォルトの名無しさんNGNG
大漁ね
0245236NGNG
また釣れた(プゲラッチョ
0246デフォルトの名無しさんNGNG
釣りって事にしないとやってられないよな
0247デフォルトの名無しさんNGNG
無能な奴にかぎって変なプライド持ってたりするからな。
ウチの会社にも居るんだけど何とかして欲しい…
0248デフォルトの名無しさんNGNG
こういう馬鹿話はマ板でやってくれんか
0249デフォルトの名無しさんNGNG
>>247
どうにもなりません。
無能なヤツは自分が無能であることに気づく能力も
自分の無能さを認める能力もありませんので。
0250デフォルトの名無しさんNGNG
質問させてください。

任意のタイミングで、フォーカスされているコントロールの HWND を
取得したいのですが、これは可能でしょうか?

既存のプログラム(ソース無し)を外部から操作したいと考えているため、
フォーカスイベント発生時にそのコントロールの HWND をグローバル変数に
保存しておくという方法が使えません。

素人ながら調べているのですが解決策へたどりつけていません。
可能か/不可能か、可能ならば参考情報へのポインタを教えていただけ
ませんでしょうか。宜しくお願いいたします。
0251デフォルトの名無しさんNGNG
GetFocus・・・。
0252デフォルトの名無しさんNGNG
まちがい・・・。
■ このスレッドは過去ログ倉庫に格納されています