by konisi » 2007年5月24日(木) 13:19
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
MainWnd_Createに突っ込んでも処理時間が短ければ別にいいのですが、
ある程度処理時間が長くなるとウインドウが表示される前に固まってしまうのでCreateThread関数などを使って飛ばした方が無難だと思います。
[hide=適当に移植してみる。sc1][code]'#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[/code][/hide]