Tips - CraftLaunch
スタートメニューの中のショートカットを自動的にコマンドとして登録するには
スタートメニューの中のショートカットを自動的にコマンドとして登録するには
config.py に以下のように記述することによって、スタートメニューの中のショートカットを自動的にコマンドとして登録することができます。
ただし、スタートメニューの内容が変化した後、それを反映させるには、CraftLaunchのなかで、[Reload]する必要があります。
# --------------------------------------------------------------------
# スタートメニューの中のショートカットをコマンドとして登録する
if 1:
startmenu_items = []
MAX_PATH = 260
CSIDL_PROGRAMS = 2
CSIDL_COMMON_PROGRAMS = 23
buf = ctypes.create_unicode_buffer(MAX_PATH)
ctypes.windll.shell32.SHGetSpecialFolderPathW( None, buf, CSIDL_PROGRAMS, 0 )
programs_dir = buf.value
ctypes.windll.shell32.SHGetSpecialFolderPathW( None, buf, CSIDL_COMMON_PROGRAMS, 0 )
common_programs_dir = buf.value
startmenu_dirs = [
programs_dir,
common_programs_dir
]
for startmenu_dir in startmenu_dirs:
for location, dirs, files in os.walk( startmenu_dir ):
for filename in files:
if not filename.lower().endswith(".lnk"):
continue
name, ext = os.path.splitext(filename)
item = ( name, window.command_ShellExecute( None, os.path.join(location,filename), u"", u"" ) )
startmenu_items.append(item)
startmenu_items.sort()
window.launcher.command_list += startmenu_items
独自のコマンドラインルールを追加するには
独自のコマンドラインルールを追加するには
CraftLaunchでは、window.commandline_list に独自のオブジェクトを追加することで、コマンドラインの解釈/実行方法をカスタマイズすることが出来ます。
この例では、URLが特定の場所のときだけ、デフォルトのブラウザの変わりに、IEを使って開く処理を追加しています。
import urlparse
class commandline_MyExecuteURL:
def __init__(self):
pass
def onCandidate( self, update_info ):
return []
def onEnter( self, commandline, text, mod ):
if not (text.lower().startswith("http:") or text.lower().startswith("https:")):
return False
parsed_url = urlparse.urlparse(text)
ie_list = [
"yahoo.co.jp",
"biglobe.ne.jp",
]
browser = None
for ie_loc in ie_list:
if parsed_url.netloc.lower().endswith(ie_loc):
browser = "C:\Program Files\Internet Explorer\iexplore.exe"
def jobShellExecute( job_item ):
if browser:
shellExecute( None, None, browser, text, u"" )
else:
shellExecute( None, None, text, u"", u"" )
def jobShellExecuteFinished( job_item ):
pass
job_item = JobItem( jobShellExecute, jobShellExecuteFinished )
JobQueue.defaultQueue().enqueue(job_item)
commandline.appendHistory( text )
commandline.quit()
return True
def onStatusString( self, text ):
return None
window.commandline_list = [ commandline_MyExecuteURL() ] + window.commandline_list
ディレクトリ名を入力してファイラで開くには
ディレクトリ名を入力してファイラで開くには
CraftLaunchでは、window.commandline_list に独自のオブジェクトを追加することで、コマンドラインの解釈/実行方法をカスタマイズすることが出来ます。
下の例では、以下のような処理を行っています。
- 入力された文字列を、区切り文字 ; で分解して、最初の引数がディレクトリ名かどうかチェック。 ディレクトリではなかったら、Falseを返す。(次の評価へ)
- ディレクトリ名なら、ファイラで開く。
- コマンド履歴に追加
class commandline_OpenByFiler:
def __init__(self):
pass
def onCandidate( self, update_info ):
return []
def onEnter( self, commandline, text, mod ):
args = text.split(';')
dirname = args[0].replace('/','\\').rstrip('\\')
if not os.path.exists(dirname) or not os.path.isdir(dirname):
return False
def jobOpenByFiler( job_item ):
filer = r"c:\ols\cfiler\cfiler.exe"
arg = '-L"%s" -R"%s"' % (dirname, dirname)
directory = "c:\ols\cfiler"
#print [ filer, arg, directory ]
clnch_misc.shellExecute( None, None, filer, arg, directory )
def jobOpenByFilerFinished( job_item ):
pass
job_item = JobItem( jobOpenByFiler, jobOpenByFilerFinished )
JobQueue.defaultQueue().enqueue(job_item)
commandline.appendHistory( text )
commandline.quit()
return True
def onStatusString( self, text ):
return None
window.commandline_list.insert( 0, commandline_OpenByFiler() );