以下は指定IP(szIPaddr)に ping を打った時の status を取得する
// 主スレッドで呼出し
CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
CoInitializeSecurity(NULL, -1, NULL, NULL, RPC_C_AUTHN_LEVEL_DEFAULT, RPC_C_IMP_LEVEL_IMPERSONATE, NULL, EOAC_NONE, 0);
// Ping status
HRESULT hr;
CComPtr< IWbemLocator > pLocator;
hr = CoCreateInstance(CLSID_WbemAdministrativeLocator, NULL, CLSCTX_INPROC_SERVER, IID_IWbemLocator, (void**)(&pLocator));
if (SUCCEEDED(hr))
{
CComPtr< IWbemServices > pService;
//hr = pLocator->ConnectServer(L"root\\cimv2", NULL, NULL, NULL, WBEM_FLAG_CONNECT_USE_MAX_WAIT, NULL, NULL, &pService);
hr = pLocator->ConnectServer(L"root\\cimv2", NULL, NULL, NULL, 0, NULL, NULL, &pService);
if (SUCCEEDED(hr))
{
CString szSQL;
szSQL.Format(_T("SELECT * FROM Win32_PingStatus WHERE Address='%s'"), szIPaddr);
_bstr_t bzSQL(_bstr_t(CT2W((LPCTSTR)szSQL)));
CComPtr< IEnumWbemClassObject > pEnumObj;
hr = pService->ExecQuery(L"WQL", bzSQL, (WBEM_FLAG_RETURN_IMMEDIATELY|WBEM_FLAG_FORWARD_ONLY), NULL, &pEnumObj);
if (SUCCEEDED(hr))
{
CComPtr< IWbemClassObject > pObj;
ULONG uReturned;
//hr = pEnumObj->Reset();
hr = pEnumObj->Next(WBEM_INFINITE, 1, &pObj, &uReturned);
if (!FAILED(hr))
{
_variant_t vtBuf;
hr = pObj->Get(L"StatusCode", 0, &vtBuf, 0, 0);
pObj.Release();
}
pEnumObj.Release();
}
pService.Release();
}
pLocator.Release();
}
2021年7月5日月曜日
win32 C++ でWMI(Windows Management Instrumentation)を使用する
2021年3月27日土曜日
VB.net での nothing (null) の扱い
勝手に初期値に変換される!
Dim dt as Date = nothing
としても dt は初期値がセットされている (nothingではない)
if (dt is Nothing) then
→ エラー
Nothing を許容するには
Dim dt? as Date = nothing
変数名のおしりに"?" をつけると nothing が代入できる
if (dt is Nothing) then
→ OK
Date型またはNothingを返す関数
Function GetDate() as Nullable(of Date)
Databaseへの登録
Nothing と DBNull.value は異なる
adoCmd.parameter.Add("DATE_VALUE",type.date).value = IIf (dt is nothing, DBNull.value, dt)
-------------------------------------------------------------
Sub Test()
Dim dt1 As Date = Nothing
Dim dt2? As Date = Nothing
'If (dt1 Is Nothing) Then
' Console.WriteLine("dt1 is nothing")
'End If
If (dt2 Is Nothing) Then
Console.WriteLine("dt2 is nothing")
End If
Console.WriteLine(String.Format("value1: {0}", dt1.ToString()))
Console.WriteLine(String.Format("value2: {0}", dt2.ToString()))
Console.WriteLine(String.Format("F1: {0}", F1().ToString()))
Console.WriteLine(String.Format("F2: {0}", F2().ToString()))
End Sub
Function F1() As Date
Return Nothing
End Function
Function F2() As Nullable(Of Date)
Return Nothing
End Function
2019年3月5日火曜日
2019年1月19日土曜日
2013年2月2日土曜日
DOS command (for - in - do)
連番で処理
windows 2000 以降で有効
/L 数列作成 --> (開始,ステップ,終了)
for /L %n in (1,1,10) do echo %n
1から10まで表示される
2012年12月7日金曜日
MDB の最適化
#import "C:\PROGRAM FILES\COMMON FILES\System\ado\MSJRO.DLL" rename_namespace("JRO")
JRO::IJetEnginePtr pJetEng;
if (FAILED(pJetEng.CreateInstance("JRO.JetEngine")))
{
pADOCat.Release();
AfxMessageBox(_T("Failed Create ADODB.Connection Instance"), MB_OK|MB_ICONERROR);
return ;
}
csConn1.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s", szBufFile);
csConn2.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Jet OLEDB:Engine Type=5", szDestFile);
pJetEng->CompactDatabase((LPCTSTR)csConn1, (LPCTSTR)csConn2);
pJetEng.Release();
2009年6月20日土曜日
VB6 の TabStrip
いまさらVB6だが、VB6の TabStrip には ハンドルのあるコントロールしか表示載らない
(ラベルなどはTabの前面に表示されない)
代替 Tabbed Dialog Control を使う
(ラベルなどはTabの前面に表示されない)
代替 Tabbed Dialog Control を使う
登録:
投稿 (Atom)