SQLの窓

2020年08月31日


VBScript : ADO : ODBC接続 : SQLExpress(SQLServer) 接続と通常処理( 更新は SQL で行う )



ドライバは、古い {SQL Server} ドライバを使用していますが、VBS では、{SQL Native Client} を使っても同じだと思います。

SQLExpress(SQLServer) の 32ビット クライアントの設定です

MSSQLServer のレジストリ位置を開く VBScript のダウンロード

※ コメント部分ですが、このサンプルで SQL の更新を接続オブシェクトのメソッドで SQL 文字列を使って実行しています。

フィールドオブジェクトにセットして更新する方法もありますが、他の言語間での移植が困難になるので、このほうが良い環境はたくさんあると思います

関連する記事

SQLExpress 2005 の接続設定
VBScript : ADO : フィールドオブジェクトを使用した同一フォーマットのテーブル間のデータコピー
VBScript : ADO : 純正接続 : SQLExpress(SQLServer) 接続と通常処理

SQLExpress にインポートするデータ(MDB)


' ***********************************************************
' SQLExpress / ODBC / {SQL Server}
' ADO : 文字列更新
' FileSystemObject : CSV出力
' ***********************************************************
strDriver = "{SQL Server}"
strTarget = "reiwa"		' 別名
strDB = "lightbox"
strUser = "sa"
strPass = "passwordpassword"

' ***********************************************************
' ADO + FileSystemObject
' ***********************************************************
Set Cn = CreateObject( "ADODB.Connection" )
Set Rs = CreateObject( "ADODB.Recordset" )
Set Fso = CreateObject( "Scripting.FileSystemObject" )

' **********************************************************
' 接続文字列
' **********************************************************
ConnectionString = _
	"Provider=MSDASQL;" & _
	"Driver=" & strDriver & ";" & _
	"SERVER=" & strTarget & ";" & _
	"DATABASE=" & strDB & ";" & _
	"UID=" & strUser & ";" & _
	"PWD=" & strPass & ";"

' **********************************************************
' 接続
' クライアントカーソル(3)を使う事が推奨されます
' **********************************************************
Cn.CursorLocation = 3
on error resume next
Cn.Open ConnectionString
if Err.Number <> 0 then
	WScript.Echo Err.Description
	Wscript.Quit
end if
on error goto 0

Query = "select * from [社員マスタ]"

' **********************************************************
' レコードセット
' オブジェクト更新時はレコード単位の共有的ロック(3)を
' 使用します( デフォルトでは更新できません )
' ※ デフォルトでも SQLによる更新は可能です
' **********************************************************
'Rs.LockType = 3
on error resume next
Rs.Open Query, Cn
if Err.Number <> 0 then
	Cn.Close
	Wscript.Echo Err.Description
	Wscript.Quit
end if
on error goto 0

' **********************************************************
' 出力ファイルオープン
' **********************************************************
Set Csv = Fso.CreateTextFile( "社員マスタ.csv", True )

' **********************************************************
' タイトル出力
' **********************************************************
Buffer = ""
For i = 0 to Rs.Fields.Count - 1
	if Buffer <> "" then
		Buffer = Buffer & ","
	end if
	Buffer = Buffer & Rs.Fields(i).Name
Next
Csv.WriteLine Buffer

' **********************************************************
' データ出力
' **********************************************************
' UpdateCnt = 0
Do While not Rs.EOF
	Buffer = ""
	For i = 0 to Rs.Fields.Count - 1
		if Buffer <> "" then
			Buffer = Buffer & ","
		end if
		Buffer = Buffer & Rs.Fields(i).Value
	Next

	' 更新
'	strDay = (UpdateCnt mod 10) + 1
'	Query = "update [社員マスタ] set [生年月日] = '2005/01/0" & strDay & "'"
'	Query = Query & " where 社員コード = '" 
'	Query = Query & Rs.Fields("社員コード").Value
'	Query = Query & "'"
	Cn.Execute( Query )

	Csv.WriteLine Buffer
	Rs.MoveNext
'	UpdateCnt = UpdateCnt + 1
Loop

' **********************************************************
' ファイルクローズ
' **********************************************************
Csv.Close
' **********************************************************
' レコードセットクローズ
' **********************************************************
Rs.Close
' **********************************************************
' 接続解除
' **********************************************************
Cn.Close


hanbaic.mdb よりインポートする為の バッチファイル
C:\Windows\SysWOW64\cscript.exe import.vbs
Windows10 64ビットで、Office が 32ビットの場合を想定しています

hanbaic.mdb よりインポートする為の VBScript
' ***********************************************************
' hanbaic.mdb からインポート
' ***********************************************************
strMdbPath = "C:\Users\lightbox\Downloads\hanbaic_mdb\hanbaic.mdb"
strConnect = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strMdbPath & ";"

' ***********************************************************
' ADO
' ***********************************************************
Set Cn = CreateObject( "ADODB.Connection" )

' **********************************************************
' MDB 用接続文字列
' **********************************************************
ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strMdbPath & ";"

' **********************************************************
' 接続
' **********************************************************
on error resume next
Cn.Open ConnectionString
if Err.Number <> 0 then
	WScript.Echo Err.Description
	Wscript.Quit
end if
on error goto 0

' **********************************************************
' 実行
' **********************************************************
RefString = "[ODBC;Driver={SQL Server};Server=reiwa;Database=lightbox;Uid=sa;Pwd=passwordpassword]"
Query = "select * into " & RefString & ".[社員マスタ] from [社員マスタ]"

on error resume next
Cn.Execute Query
if Err.Number <> 0 then
	WScript.Echo Err.Description
	Wscript.Quit
end if
on error goto 0

' **********************************************************
' 接続解除
' **********************************************************
Cn.Close




posted by lightbox at 2020-08-31 09:06 | SQLExpress | このブログの読者になる | 更新情報をチェックする

2020年08月30日


タスクマネージャーで、実行中のアプリケーションが 32 ビットか 64 ビットかを確認する

詳細タブを選択
タイトル部分を右クリックして、列の選択をクリック
表示されたダイアログで、『プラットフォーム』にチェック

※ IE11 の場合は、32ビットの行があれば 32ビット






posted by lightbox at 2020-08-30 18:42 | Windows10 | このブログの読者になる | 更新情報をチェックする

PowerShell を使用して、C# のコンソールアプリ用のソースコードから exe を作成する( WebClient で wget.exe ) / ビルドせずに PowerShell で実行

▼ ps.bat ( PowerShell をそのまま使えない場合は以下のバッチファイルを作成して使用します )
@powershell -NoProfile -ExecutionPolicy Unrestricted "./%1.ps1"
▼ build.ps1
Add-Type -path "wget.cs" `
	-ReferencedAssemblies System.Web, System.Windows.Forms `
	-OutputAssembly my_wget.exe `
	-OutputType ConsoleApplication

Read-Host "何かキーを押してください"


wget.cs は、wget.ps1 と同じフォルダにあります
 ` で継続行指定です。
System.Web, System.Windows.Forms という感じで複数の指定を行っています

▼ wget.cs

第一引数に渡した URL をダウンロードします。
Environment.GetCommandLineArgs() の結果には、自分自身が含まれています。
よって、param[1] と args[0] が同じ内容になります。( 後述の PowerShell から実行した場合は、param には PowerShell への引数がセットされます )
Visual Studio で追加参照が必要なクラスが -ReferencedAssemblies の対象です
using System;
using System.IO;
using System.Net;
using System.Web;
using System.Windows.Forms;

public class Program
{
	public static void Main(string[] args)
	{
		ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;	

		string[] param = Environment.GetCommandLineArgs();
		if (param.Length > 1)
		{
			Console.WriteLine( string.Format("第一引数 : {0}", param[1]) );
			Console.WriteLine(string.Format("第一引数 : {0}", args[0]));
		}
		else
		{
			MessageBox.Show("ダウンロードする URL を引数に指定して下さい");
			Environment.Exit(0);
		}

		string localFileName = Path.GetFileName(param[1]);
		Console.WriteLine(string.Format("ファイル名 : {0}", localFileName));

		using( WebClient wc = new WebClient() ) {
			wc.DownloadFile( param[1], localFileName );
		}

		// *******************************************
		// -ReferencedAssemblies の複数テスト用
		// *******************************************
		string percent_encoding = HttpUtility.UrlEncode(param[1]);
		Console.WriteLine( percent_encoding );

		MessageBox.Show("処理が終了しました");

	}
}


MessageBox.Show
HttpUtility.UrlEncode

▼ 実行用バッチファイルのサンプル
my_wget.exe https://winofsql.jp/image/planet.jpg
▼ 実行結果の表示
C:\user\ps\cs>my_wget.exe http://winofsql.jp/image/planet.jpg
第一引数 : http://winofsql.jp/image/planet.jpg
第一引数 : http://winofsql.jp/image/planet.jpg
ファイル名 : planet.jpg
http%3a%2f%2fwinofsql.jp%2fimage%2fplanet.jpg
この後、メッセージボックスが表示されます PowerShell として exe なしで実行する場合 ▼ run.ps1
Param($url)
Write-Host $url

Add-Type -path "wget.cs" `
	-ReferencedAssemblies System.Web, System.Windows.Forms

[Program]::Main($url)

Read-Host "何かキーを押してください"

実行
powershell -NoProfile -ExecutionPolicy Unrestricted run.ps https://winofsql.jp/image/planet.jpg

スクリプトセットのダウンロード




関連するドキュメント


Read-Host コマンドレットの使用
Add-Type




posted by lightbox at 2020-08-30 14:33 | PowerShell + C# | このブログの読者になる | 更新情報をチェックする

2020年08月28日


デスクトップにユーザアイコンを登録してメニューとして使用する

Windows Update で消失するので注意

Windows10 2004 アップデートで削除されるようなので、カスタマイズした場合はエクスポートして保存が必要です
▼ インストールするレジストリのキー
HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}

※ 後述のレジストリデータで使用されていますが、{6100C8E5-973E-40B7-8254-807855D2C355} は、デスクトップで使用可能な NameSpace として登録してからメニューを登録しています

ダウンロード

解凍後の内容

user-desktop-icon.reg をエクスプローラからダブルクリックでインストールされ、remove-menu.reg をエクスプローラからダブルクリックでアンインストールされます。 ※ open_registry.vbs を同梱しました。実行すると、登録されたレジストリの位置でリジストリエディタを開きます

user-desktop-icon.reg

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\{6100C8E5-973E-40B7-8254-807855D2C355}]
@="USER"

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}]
@="USER"

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\DefaultIcon]
@="%SystemRoot%\\system32\\imageres.dll,1"

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell]

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\000]
@="Google Chrome(シークレットモード)"

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\000\command]
@="\"C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe\" --incognito https://www.google.co.jp/"

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\000b]
@=""
"SubCommands"=""
"MUIVerb"="Windows"

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\000b\shell]

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\000b\shell\cmd01]
"Icon"="explorer.exe,0"
@="SendTo フォルダ"

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\000b\shell\cmd01\command]
@="explorer.exe shell:SendTo"

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\000b\shell\cmd02]
"Icon"="explorer.exe,0"
@="Startup フォルダ"

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\000b\shell\cmd02\command]
@="explorer.exe shell:Startup"

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\000b\shell\cmd03]
@="ペイント"

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\000b\shell\cmd03\command]
@="mspaint.exe"

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\000b\shell\cmd04]
@="ネットワークドライブの割り当て"

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\000b\shell\cmd04\command]
@="rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL Connect"

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\000b\shell\cmd05]
@="ディスク クリーンアップ(管理者権限)"

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\000b\shell\cmd05\command]
@=hex(2):70,00,6f,00,77,00,65,00,72,00,73,00,68,00,65,00,6c,00,6c,00,20,00,2d,\
  00,4e,00,6f,00,50,00,72,00,6f,00,66,00,69,00,6c,00,65,00,20,00,2d,00,45,00,\
  78,00,65,00,63,00,75,00,74,00,69,00,6f,00,6e,00,50,00,6f,00,6c,00,69,00,63,\
  00,79,00,20,00,75,00,6e,00,72,00,65,00,73,00,74,00,72,00,69,00,63,00,74,00,\
  65,00,64,00,20,00,2d,00,57,00,69,00,6e,00,64,00,6f,00,77,00,53,00,74,00,79,\
  00,6c,00,65,00,20,00,68,00,69,00,64,00,64,00,65,00,6e,00,20,00,2d,00,43,00,\
  6f,00,6d,00,6d,00,61,00,6e,00,64,00,20,00,22,00,73,00,74,00,61,00,72,00,74,\
  00,20,00,25,00,77,00,69,00,6e,00,64,00,69,00,72,00,25,00,5c,00,73,00,79,00,\
  73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,63,00,6c,00,65,00,61,00,6e,00,6d,\
  00,67,00,72,00,2e,00,65,00,78,00,65,00,20,00,2d,00,76,00,65,00,72,00,62,00,\
  20,00,72,00,75,00,6e,00,61,00,73,00,22,00,00,00

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\000b\shell\cmd06]
@="デスクトップアイコンの設定"

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\000b\shell\cmd06\command]
@="rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,0"

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\000b\shell\cmd07]
@="プリンタフォルダ"
"Icon"="explorer.exe,0"

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\000b\shell\cmd07\command]
@="Rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL PrintersFolder"

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\000b\shell\cmd08]
@="ネットワーク接続"

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\000b\shell\cmd08\command]
@="Rundll32.exe shell32.dll,Control_RunDLL ncpa.cpl"

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\000b\shell\cmd09]
@="デバイスマネージャー"

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\000b\shell\cmd09\command]
@="Rundll32.exe devmgr.dll DeviceManager_Execute"

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\001]
@="   サービス"

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\001\command]
@=hex(2):6d,00,6d,00,63,00,2e,00,65,00,78,00,65,00,20,00,22,00,25,00,53,00,79,\
  00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,00,5c,00,73,00,79,00,\
  73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,73,00,65,00,72,00,76,00,69,00,63,\
  00,65,00,73,00,2e,00,6d,00,73,00,63,00,22,00,20,00,2f,00,73,00,00,00

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\002]
@="   システム情報"

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\002\command]
@=hex(2):22,00,25,00,50,00,72,00,6f,00,67,00,72,00,61,00,6d,00,46,00,69,00,6c,\
  00,65,00,73,00,25,00,5c,00,43,00,6f,00,6d,00,6d,00,6f,00,6e,00,20,00,46,00,\
  69,00,6c,00,65,00,73,00,5c,00,4d,00,69,00,63,00,72,00,6f,00,73,00,6f,00,66,\
  00,74,00,20,00,53,00,68,00,61,00,72,00,65,00,64,00,5c,00,4d,00,53,00,49,00,\
  6e,00,66,00,6f,00,5c,00,6d,00,73,00,69,00,6e,00,66,00,6f,00,33,00,32,00,2e,\
  00,65,00,78,00,65,00,22,00,00,00

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\003]
@="   プログラムと機能"

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\003\command]
@="RunDLL32.EXE shell32.dll,Control_RunDLL appwiz.cpl"

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\004a]
@="   ODBC アドミニストレータ(64)"

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\004a\command]
@=hex(2):22,00,25,00,77,00,69,00,6e,00,64,00,69,00,72,00,25,00,5c,00,73,00,79,\
  00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,6f,00,64,00,62,00,63,00,61,00,\
  64,00,33,00,32,00,2e,00,65,00,78,00,65,00,22,00,00,00

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\004b]
@="   ODBC アドミニストレータ(32)"

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\004b\command]
@=hex(2):22,00,25,00,77,00,69,00,6e,00,64,00,69,00,72,00,25,00,5c,00,73,00,79,\
  00,73,00,77,00,6f,00,77,00,36,00,34,00,5c,00,6f,00,64,00,62,00,63,00,61,00,\
  64,00,33,00,32,00,2e,00,65,00,78,00,65,00,22,00,00,00

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\005]
@="   レジストリエディタ"

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\005\command]
@="regedit.exe"

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\006a]
@="   コマンドプロンプト"

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\006a\command]
@="cmd.exe"

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\006b]
@="   コマンドプロンプト(管理者権限)"

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\006b\command]
@="powershell -NoProfile -ExecutionPolicy unrestricted -WindowStyle hidden -Command \"start cmd.exe -verb runas\""

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\007]
@="   UAC"

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\007\command]
@=hex(2):55,00,73,00,65,00,72,00,41,00,63,00,63,00,6f,00,75,00,6e,00,74,00,43,\
  00,6f,00,6e,00,74,00,72,00,6f,00,6c,00,53,00,65,00,74,00,74,00,69,00,6e,00,\
  67,00,73,00,2e,00,65,00,78,00,65,00,00,00

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\008]
@="   イベント ビューアー"

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\008\command]
@=hex(2):6d,00,6d,00,63,00,2e,00,65,00,78,00,65,00,20,00,22,00,25,00,77,00,69,\
  00,6e,00,64,00,69,00,72,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,\
  33,00,32,00,5c,00,65,00,76,00,65,00,6e,00,74,00,76,00,77,00,72,00,2e,00,6d,\
  00,73,00,63,00,22,00,20,00,2f,00,73,00,00,00

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\009]
@="   ユーザーアカウント"

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\009\command]
@="rundll32.exe netplwiz.dll,UsersRunDll"

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\010]
@="   環境変数(管理者権限)"

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\010\command]
@="powershell -NoProfile -ExecutionPolicy unrestricted -WindowStyle hidden -Command \"start rundll32.exe sysdm.cpl,EditEnvironmentVariables -verb runas\""

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\011]
@="   HOSTS(管理者権限)"

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\011\command]
@=hex(2):70,00,6f,00,77,00,65,00,72,00,73,00,68,00,65,00,6c,00,6c,00,20,00,2d,\
  00,4e,00,6f,00,50,00,72,00,6f,00,66,00,69,00,6c,00,65,00,20,00,2d,00,45,00,\
  78,00,65,00,63,00,75,00,74,00,69,00,6f,00,6e,00,50,00,6f,00,6c,00,69,00,63,\
  00,79,00,20,00,75,00,6e,00,72,00,65,00,73,00,74,00,72,00,69,00,63,00,74,00,\
  65,00,64,00,20,00,2d,00,57,00,69,00,6e,00,64,00,6f,00,77,00,53,00,74,00,79,\
  00,6c,00,65,00,20,00,68,00,69,00,64,00,64,00,65,00,6e,00,20,00,2d,00,43,00,\
  6f,00,6d,00,6d,00,61,00,6e,00,64,00,20,00,22,00,73,00,74,00,61,00,72,00,74,\
  00,20,00,6e,00,6f,00,74,00,65,00,70,00,61,00,64,00,2e,00,65,00,78,00,65,00,\
  20,00,25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
  00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,64,00,72,00,\
  69,00,76,00,65,00,72,00,73,00,5c,00,65,00,74,00,63,00,5c,00,68,00,6f,00,73,\
  00,74,00,73,00,20,00,2d,00,76,00,65,00,72,00,62,00,20,00,72,00,75,00,6e,00,\
  61,00,73,00,22,00,00,00

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\012]
@="   フォルダオプション"

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\012\command]
@="RUNDLL32.EXE shell32.dll,Options_RunDLL 7"

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\013]
@="   タスク スケジューラ"

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\013\command]
@=hex(2):6d,00,6d,00,63,00,2e,00,65,00,78,00,65,00,20,00,22,00,25,00,77,00,69,\
  00,6e,00,64,00,69,00,72,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,\
  33,00,32,00,5c,00,74,00,61,00,73,00,6b,00,73,00,63,00,68,00,64,00,2e,00,6d,\
  00,73,00,63,00,22,00,20,00,2f,00,73,00,00,00

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\014]
@="   ローカル グループ ポリシーエディタ"

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\014\command]
@=hex(2):6d,00,6d,00,63,00,2e,00,65,00,78,00,65,00,20,00,22,00,25,00,53,00,79,\
  00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,00,5c,00,73,00,79,00,\
  73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,67,00,70,00,65,00,64,00,69,00,74,\
  00,2e,00,6d,00,73,00,63,00,22,00,00,00

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\015]
@="   リモートデスクトップ"

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\015\command]
@="mstsc.exe"

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\016]
@="   Windows Update"

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\016\command]
@="control.exe /name Microsoft.WindowsUpdate"

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\Manage]
@=hex(2):40,00,25,00,73,00,79,00,73,00,74,00,65,00,6d,00,72,00,6f,00,6f,00,74,\
  00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,6d,00,\
  79,00,63,00,6f,00,6d,00,70,00,75,00,74,00,2e,00,64,00,6c,00,6c,00,2c,00,2d,\
  00,34,00,30,00,30,00,00,00
"HasLUAShield"=""
"MUIVerb"=hex(2):40,00,25,00,73,00,79,00,73,00,74,00,65,00,6d,00,72,00,6f,00,\
  6f,00,74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,\
  00,6d,00,79,00,63,00,6f,00,6d,00,70,00,75,00,74,00,2e,00,64,00,6c,00,6c,00,\
  2c,00,2d,00,34,00,30,00,30,00,00,00
"SuppressionPolicy"=dword:4000003c

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\shell\Manage\command]
@=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
  00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,43,00,6f,00,\
  6d,00,70,00,4d,00,67,00,6d,00,74,00,4c,00,61,00,75,00,6e,00,63,00,68,00,65,\
  00,72,00,2e,00,65,00,78,00,65,00,00,00

[HKEY_CLASSES_ROOT\CLSID\{6100C8E5-973E-40B7-8254-807855D2C355}\ShellFolder]
"Attributes"=dword:00000010






posted by lightbox at 2020-08-28 12:39 | Windows | このブログの読者になる | 更新情報をチェックする

2020年08月23日


エクスプローラを右クリックしてそのフォルダで「コマンドプロント」を開くメニューを追加する .reg ファイル



ZIP ダウンロード



エクスプローラを右クリックしてコマンドプロンプトを開きたい場合は、以下のレジストリをインポートします

Windows Registry Editor Version 5.00
 
[HKEY_CLASSES_ROOT\Directory\shell\usercmd]
@="コマンドプロンプトをここで開く(&P)"
 
[HKEY_CLASSES_ROOT\Directory\shell\usercmd\command]
@="cmd.exe /s /k pushd \"%V\""


削除用

Windows Registry Editor Version 5.00
 
[-HKEY_CLASSES_ROOT\Directory\shell\usercmd]
 




このページの PDF



posted by lightbox at 2020-08-23 10:59 | コマンドプロンプト | このブログの読者になる | 更新情報をチェックする

2020年08月20日


XAMPP + Python( 3.8 ) で WEBアプリの基礎部分構築 : その ( 4 ) : リダイレクトと関数とログ出力

def を使用して ファイルにログを書き込む処理を定義し、REQUEST_METHOD で判断して POST 時にリダイレクトを行います



XAMPP で Python を実行できるようにするには、httpd.conf の 『AddHandler cgi-script .cgi .pl .asp』 に .py を追加します



Windows では、Python の先頭に Python の実行プログラムの場所を記述しなくても、Windows のレジストリに設定して動作できるようにする事ができるようです
( 💘 ScriptInterpreterSource Registry-Strict )

Python のダウンロードとインストールは こちら(Windows 環境のPython) がとても参考になります

sample_04.py

REQUEST_METHOD を取得して、POST 時に HTTP ヘッダにリダイレクト処理を入れたり、ログ出力を実行するようにしています
if method == "POST":
	print( "Location: sample_04.py?field3=%E5%B1%B1%E7%94%B0%20%E5%A4%AA%E9%83%8E" )

#!C:\python\python.exe

import cgi
import cgitb
cgitb.enable()

import sys
import io
import os
import urllib.parse
from xml.sax.saxutils import *

# **************************************
# ログ出力
# **************************************
def log( message ):
	with open('debug.log', 'a') as f:
		print(message,end='\n',file=f)

sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')

method = os.environ["REQUEST_METHOD"]

print("Content-Type: text/html; charset=utf-8")
print( "Expires: Thu, 19 Nov 1981 08:52:00 GMT" )
print( "Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0" )
print( "Pragma: no-cache" )
if method == "POST":
	print( "Location: sample_04.py?field3=%E5%B1%B1%E7%94%B0%20%E5%A4%AA%E9%83%8E" )
print()

form = cgi.FieldStorage()

# form 用データの内容です
result = str(form) + "<br>"
if method == "POST":
	log( form )

form_data = {}
fields = [ "field1", "field2", "field3", "field4", "send" ]
for field_name in fields:
	if field_name not in form:
		form_data[field_name] = ""
	else:
		form_data[field_name] = form.getvalue(field_name)

# 以降で使用可能なディクショナリの内容です
result += str(form_data) + "<br>"
if method == "POST":
	log( form_data )

view = f"""<!DOCTYPE html>
<html>
<head>
<meta content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" name="viewport">
<meta charset="UTF-8">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.5.0/css/bootstrap.css">

<style>
#main {{
	padding: 30px;
	font-size: 24px;
}}

form {{
	margin-bottom: 20px;
}}

.inline {{
	display: inline-block;
}}
.ttl {{
	width: 100px;
}}
</style>
</head>
<body>
<div id="main">

	<form method="post">
		<div>
			<div class="inline ttl">氏名</div>
			<div class="inline"><input type="text" name="field3" value="{form_data["field3"]}"></div>
		</div>

		<div>
			<div class="inline ttl">フリガナ</div>
			<div class="inline"><input type="text" name="field4" value="{form_data["field4"]}"></div>
			<div class="inline ml-2"><input type="submit" name="send" value="送信"></div>
		</div>
	</form>

	{result}

</div>
</body>
</html>"""

print(view)


関連する記事

XAMPP + Python( 3.8 ) で WEBアプリの基礎部分構築 : その ( 1 )

XAMPP + Python( 3.8 ) でWEBアプリの基礎部分構築 : その ( 2 ) : QUERY_STRING と 画面定義

XAMPP + Python( 3.8 ) で WEBアプリの基礎部分構築 : その ( 3 ) : cgi.FieldStorage() から ディクショナリ

XAMPP + Python( 3.8 ) で WEBアプリの基礎部分構築 : その ( 4 ) : リダイレクトと関数とログ出力


posted by lightbox at 2020-08-20 16:54 | Python | このブログの読者になる | 更新情報をチェックする
Seesaa の各ページの表示について
Seesaa の 記事がたまに全く表示されない場合があります。その場合は、設定> 詳細設定> ブログ設定 で 最新の情報に更新の『実行ボタン』で記事やアーカイブが最新にビルドされます。

Seesaa のページで、アーカイブとタグページは要注意です。タグページはコンテンツが全く無い状態になりますし、アーカイブページも歯抜けページはコンテンツが存在しないのにページが表示されてしまいます。

また、カテゴリページもそういう意味では完全ではありません。『カテゴリID-番号』というフォーマットで表示されるページですが、実際存在するより大きな番号でも表示されてしまいます。

※ インデックスページのみ、実際の記事数を超えたページを指定しても最後のページが表示されるようです

対処としては、このようなヘルプ的な情報を固定でページの最後に表示するようにするといいでしょう。具体的には、メインの記事コンテンツの下に『自由形式』を追加し、アーカイブとカテゴリページでのみ表示するように設定し、コンテンツを用意するといいと思います。


※ エキスパートモードで表示しています

アーカイブとカテゴリページはこのように簡単に設定できますが、タグページは HTML 設定を直接変更して、以下の『タグページでのみ表示される内容』の記述方法で設定する必要があります

<% if:page_name eq 'archive' -%>
アーカイブページでのみ表示される内容
<% /if %>

<% if:page_name eq 'category' -%>
カテゴリページでのみ表示される内容
<% /if %>

<% if:page_name eq 'tag' -%>
タグページでのみ表示される内容
<% /if %>
この記述は、以下の場所で使用します
container 終わり



フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり