ExcelVBAで レジストリの値の名前と種類を列挙する

レジストリの指定パス内にある名前と種類を列挙する

WMIというのを使う

Option Explicit

'WMIにて使用する各種オブジェクトを定義・生成する。
Dim oClass
Dim oLocator
Dim oService
Dim oRegName
Dim oRegType
Dim i
Dim sMesStr
Dim sTypeStr
Const HKEY_LOCAL_MACHINE = &H80000002

'ローカルコンピュータに接続する。
Set oLocator = WScript.CreateObject("WbemScripting.SWbemLocator")
Set oService = oLocator.ConnectServer(, "root\default")
'クエリー条件を WQL にて指定する。
Set oClass = oService.Get("StdRegProv")

oClass.EnumValues HKEY_LOCAL_MACHINE, _
"SOFTWARE\Microsoft\Windows NT\CurrentVersion", oRegName, oRegType

For i = 0 To Ubound(oRegName)

  Select Case oRegType(i)
  Case 1
  sTypeStr = "REG_SZ"
  Case 2
  sTypeStr = "REG_EXPAND_SZ"
  Case 3
  sTypeStr = "REG_BINARY"
  Case 4
  sTypeStr = "REG_DWORD"
  Case 7
  sTypeStr = "REG_MULTI_SZ"
  End Select

  sMesStr = sMesStr & oRegName(i) & " : " & sTypeStr & vbCrLf

Next

MsgBox "レジストリの値の名前と種類を列挙します。" & vbCrLf & vbCrLf & sMesStr

'使用した各種オブジェクトを後片付けする。
Set oClass = Nothing
Set oService = Nothing
Set oLocator = Nothing

上場祝いには胡蝶蘭とのこと

上場祝いの胡蝶蘭を贈るときのマナー

【お祝いの式典・パーティを開催する場合】
贈るタイミング:式典当日の朝
贈り先    :式典会場宛て

【お祝いの式典・パーティを開催しない場合】
贈るタイミング:上場当日
贈り先    :会社宛て

らしい。

デュアルディスプレイ、マルチディスプレイのとき、全部まとめたサイズを取得する

int dispx = GetSystemMetrics( SM_CXVIRTUALSCREEN);
int dispy = GetSystemMetrics( SM_CYVIRTUALSCREEN);

PHPにてSendGridでメールを送信するシンプルサンプル

準備

ここから最新版のsendgrid-phpを取得してきて、ftpでsendgrid-phpというフォルダつくって中身をアップロード

コード

$fromAddrに送信元アドレス、$toAddrに送信先アドレス、$subjectにタイトル、$messに本文が入ってることにする

require("sendgrid-php/sendgrid-php.php");

$email = new \SendGrid\Mail\Mail(); 
$email->setFrom($fromAddr);
$email->setSubject($subject);
$email->addTo($toAddr);
$email->addContent("text/plain", $mess);

$sendgrid = new \SendGrid('APIキーをここに入力');
try {
	$response = $sendgrid->send($email);
} catch (Exception $e) {
	echo '捕捉した例外: ',  $e->getMessage(), "<br>\n";
	return -1;
}

WordpressプラグインUpdraftPlusで「あなたのWordPressのインストールには、余分な空白を出力する問題があります。これは、ここからダウンロードしたバックアップが壊れる。」エラー

<?phpの前や?>の後ろに空白や改行があるとこういったエラーが出るとのこと。

オリジナルで作ってたテーマのfunction.phpにある?>の後に合った空の改行を根こそぎ削ったら治った。

CDialogでEnterキー(Escキー)を押しても、ダイアログが閉じないようにする

PreTranslateMessage()追加して、以下記述

BOOL CXXXDialog::PreTranslateMessage(MSG* pMsg)
{
	if( WM_KEYDOWN == pMsg->message )
	{
		switch( pMsg->wParam )
		{
			case VK_RETURN:
				return FALSE;
			case VK_ESCAPE:
				return FALSE;
			default:
				break;
		}
	}
	return CDialog::PreTranslateMessage(pMsg);
}

バッチファイルでフォルダ内のCSVの指定列だけ抽出

やってみたけど激重。ファイル多いと使いもんにならない。

まずこのコマンドでbatファイルを作成し、batを実行するだけ
加工済のファイル置き場を"#加工済"で作ってあること前提です。

FOR /F %i IN ('dir /b *.csv') DO @ECHO FOR /F "tokens=5,6,7 delims=^," %%a IN (%i) DO @ECHO %%a %%b %%c ^>^> #加工済\%i >> bat.bat

delims=で区切り文字を指定
tokens=で何列目を出力するか指定。

FOR /F "tokens=5,6,7 delims=^," %a IN (%i) DO @ECHO %a %b %c


%a IN で 最初の文字指定して、3つ出力するものがあれば %a %b %cと書く

なので4つ出力するものあるなら

FOR /F "tokens=5,6,7,8 delims=^," %a IN (%i) DO @ECHO %a %b %c %d

と増やすのです。