ページ 1 / 1
C か C++ の文で…
Posted: 2007年5月23日(水) 17:22
by M.S.
C か C++ かはわからないのですが、
Microsoft のサイトで
「Windows 95 でパフォーマンス レジストリにアクセスする方法」というページを見つけたので、
AB でやってみることにしたのですが、
コード: 全て選択
void main (void)
}
というところで詰まってしまいました。
ここは「sub main()」とするのか、
それとも他のところに書くのかがわかりません。
とれはどちらにすれば良いのでしょうか?
Re: C か C++ の文で…
Posted: 2007年5月23日(水) 18:45
by 7
> ここは「sub main()」とするのか、
> それとも他のところに書くのかがわかりません。
C言語でプログラムを組む時、一番最初に実行される関数がmain関数になります。
Windowsプログラミングをする場合はWinMain関数。
ActiveBasicでRADツールを使ってプログラミングしているならmain関数を作らなくても、
MainWnd_Create関数の中にコードを突っ込んでおけば問題ないんではないかと思います。
Posted: 2007年5月24日(木) 13:19
by konisi
MainWnd_Createに突っ込んでも処理時間が短ければ別にいいのですが、
ある程度処理時間が長くなるとウインドウが表示される前に固まってしまうのでCreateThread関数などを使って飛ばした方が無難だと思います。
適当に移植してみる。sc1 [ここをクリックすると内容が表示されます] [ここをクリックすると非表示にします]コード: 全て選択
'#include <windows.h>
'#include <stdio.h>
#console
Const DIFFFLAGLEN = 6
Const PERFENUMKEY = "System\\CurrentControlSet\\Control\\PerfStats\\Enum"
Dim szCounter [MAX_PATH] As Char
Dim szObject [MAX_PATH] As Char
Dim szName [MAX_PATH] As Char
Dim lpszDescBuff = NULL As LPSTR
Dim szDiffFlag [DIFFFLAGLEN] As Char ' "TRUE" または "FALSE" が入ります。
Sub main ()
Dim rc As DWord
Dim dwIndex1 As DWord, dwIndex2 As DWord
Dim dwType As DWord
Dim dwBufSize As DWord
Dim hKey As HKEY
Dim hObject As HKEY
Dim hCounter As HKEY
rc = RegOpenKeyEx(HKEY_LOCAL_MACHINE,PERFENUMKEY, 0, KEY_READ,VarPtr(hKey))
if rc = ERROR_SUCCESS then
dwBufSize = MAX_PATH
dwIndex1 = 0
' オブジェクトを列挙します。
while RegEnumKeyEx(hKey, dwIndex1, szObject,VarPtr(dwBufSize), NULL, NULL, NULL, NULL) = ERROR_SUCCESS
dwIndex1++
if ((rc=RegOpenKeyEx(hKey, szObject, 0, KEY_READ, VarPtr(hObject)))= ERROR_SUCCESS) then
' hObject を使ってオープン キーの情報を処理します。
End If
RegCloseKey(hObject)
dwBufSize = MAX_PATH
Wend
RegCloseKey (hKey)
else
Print "Error ";MakeStr(rc);" opening ";MakeStr(PERFENUMKEY)
End If
End Sub
Posted: 2007年5月24日(木) 17:53
by M.S.
7 さん、konisi さんありがとうございます。
「MainWnd_Create」に書いてみて応答無しになりそうだったら「sub main()」にすることにします。