Skip to content

Commit

Permalink
v0.0.0.1 Released.
Browse files Browse the repository at this point in the history
  • Loading branch information
wlix committed Sep 11, 2020
1 parent 81b0c0b commit b6b39cb
Show file tree
Hide file tree
Showing 4 changed files with 132 additions and 24 deletions.
9 changes: 3 additions & 6 deletions README.TXT
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,8 @@ DLLファイル 及び .xmlファイルを削除してください。


【使用方法】



【ランチャーメニューの設定】

メニューを右クリックするとコンテキストメニューを表示します。
ランチャーに表示するものは同梱のxmlファイルを編集してください。


【ライセンス】
Expand All @@ -54,7 +51,7 @@ http://ttbase.coresv.com/uploader/


【更新履歴】
2020.09.10 v0.0.0.1
2020.09.11 v0.0.0.1
・初版作成


Expand Down
118 changes: 118 additions & 0 deletions menu_launch.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
<?xml version="1.0" encoding="Shift_JIS"?>

<menulaunch>
<!--
setting
その他の設定
icon
"yes" にするとアイコンを表示
menupos
メニューを表示する位置
"マウスカーソル", "中央", "左上", "右上", "左下", "右下", "[x座標],[y座標]"(例 "100,200")
-->
<setting icon="yes" menupos="中央"/>
<!--
menu
メニューの設定
execute (もしくはitem)
起動する項目を作ります。
title
名前
"&amp;"の次の文字はショートカットキーになります。
path
起動するファイルのパス
以下は省略可能
param
パラメータ
icon
アイコンのパス
index
iconで指定したファイルのアイコンの番号
command
TTBaseにインストールされているプラグインのコマンドを実行する項目を作ります。
title
名前
"&amp;"の次の文字はショートカットキーになります。
filename
プラグインのファイル名(TTBase.exeからの相対パス,省略可)
id
コマンドID
以下は省略可能
icon
アイコンのパス
index
iconで指定したファイルのアイコンの番号
folder
フォルダーを展開する項目を作ります。
title
名前 "&amp;"の次の文字はショートカットキーになります。
path
フォルダーのパス
マイコンピュータやコントロールパネルなどの特殊フォルダを指定したい場合は
"::{20D04FE0-3AEA-1069-A2D8-08002B30309D}"のようなクラスIDを指定してください。
参考:http://npc.nikkeibp.co.jp/npc/data/data_conpane/20050228conpane.txt
省略するとデスクトップを指定したことになります。
以下は省略可能
icon
アイコンのパス
index
iconで指定したファイルのアイコンの番号
showicon
アイコンを表示するかどうかを "yes" "no"で指定します。
folderonly
フォルダのみを表示するか,ファイルも表示するかを "yes" "no"で指定します。
submenu
サブメニューを作ります。
title
名前 "&amp;"の次の文字はショートカットキーになります。
以下は省略可能
icon
アイコンのパス
index
iconで指定したファイルのアイコンの番号を指定します。
サブメニューを持つ項目をダブルクリックすることで
以下の属性を指定したコマンドを起動することができます
path
起動するファイルのパス
param
パラメータ
separator
セパレータを作ります。
-->
<menu>
<submenu title="&amp;Net" icon="SHELL32.dll" index="14">
<execute title="Microsoft &amp;Edge" path="%ProgramFiles(x86)%\Microsoft\Edge\Application\msedge.exe"/>
<execute title="&amp;Firefox" path="%ProgramFiles%\Mozilla Firefox\firefox.exe"/>
<execute title="&amp;Google Chrome" path="%ProgramFiles(x86)%\Google\Chrome\Application\chrome.exe"/>
<execute title="&amp;Thunderbird" path="%ProgramFiles%\Mozilla Thunderbird\thunderbird.exe"/>
</submenu>
<submenu title="&amp;Player" path="%USERPROFILE%\My Documents\My Music">
<execute title="&amp;Windows Media Player" path="%ProgramFiles%\Windows Media Player\wmplayer.exe"/>
<execute title="&amp;Real Player" path="%ProgramFiles(x86)%\GRETECH\GOMPlayer\GOM.exe"/>
<execute title="&amp;Volume" path="%SystemRoot%\system32\sndvol32.exe"/>
</submenu>
<submenu title="&amp;TTBaseシステム">
<command title="TTBaseの設定(&amp;S)" filename="Setting.dll" id="2" />
<command title="TTBaseのバージョン情報(&amp;A)" filename="Setting.dll" id="3" />
</submenu>
<submenu title="設定(&amp;S)">
<item title="設定ファイルを開く(&amp;O)" path="C:\WINDOWS\system32\notepad.exe" param="%ProgramFiles%\ttbase\MenuLaunch.xml"/>
<command title="設定の再読み込み(&amp;R)" filename="MenuLaunch.dll" id="3"/>
</submenu>
<folder title="デスクトップ(&amp;D)"/>
<folder title="マイコンピュータ(&amp;M)" path="::{20D04FE0-3AEA-1069-A2D8-08002B30309D}" folderonly="yes"/>
<folder title="コントロールパネル(&amp;C)" path="::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{21EC2020-3AEA-1069-A2DD-08002B30309D}" showicon="no"/>
<separator/>
<execute title="&amp;ShutDown" path="shutdown" param="-s -t 0" icon="SHELL32.dll" index="27"/>
<execute title="&amp;LogOff" path="shutdown" param="-l" icon="SHELL32.dll" index="44"/>
</menu>
</menulaunch>
25 changes: 7 additions & 18 deletions ml_xml.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

XML_TEXT_ENCODING g_encoding = XML_TEXT_ENCODING::SHIFT_JIS;

std::wstring multi_to_wide(std::string const& src) {
std::wstring WINAPI multi_to_wide(std::string const& src) {
auto const dest_size = ::MultiByteToWideChar(CP_ACP, 0U, src.data(), -1, nullptr, 0U);
std::vector<wchar_t> dest(dest_size, L'\0');
if (::MultiByteToWideChar(CP_ACP, 0U, src.data(), -1, dest.data(), dest.size()) == 0) {
Expand All @@ -18,7 +18,7 @@ std::wstring multi_to_wide(std::string const& src) {
return std::wstring(dest.begin(), dest.end());
}

std::wstring utf8_to_wide(std::string const& src) {
std::wstring WINAPI utf8_to_wide(std::string const& src) {
auto const dest_size = ::MultiByteToWideChar(CP_UTF8, 0U, src.data(), -1, nullptr, 0U);
std::vector<wchar_t> dest(dest_size, L'\0');
if (::MultiByteToWideChar(CP_UTF8, 0U, src.data(), -1, dest.data(), dest.size()) == 0) {
Expand All @@ -29,7 +29,7 @@ std::wstring utf8_to_wide(std::string const& src) {
return std::wstring(dest.begin(), dest.end());
}

std::string utf16_to_utf8(std::u16string const& src) {
std::string WINAPI utf16_to_utf8(std::u16string const& src) {
std::wstring_convert<std::codecvt_utf8_utf16<char16_t>, char16_t> converter;
return converter.to_bytes(src);
}
Expand Down Expand Up @@ -173,7 +173,7 @@ BOOL WINAPI LoadMenuItems(xml_node<>* parent_node, HMENU hMenu, MLMenu& mlm) {
if (_strcmpi(node->name(), "item") == 0 ||
_strcmpi(node->name(), "execute") == 0) {
MenuItem mi = { MenuItem::EXECUTE };
mi.execute.Path = node->first_attribute("path")->value();
mi.execute.Path = WrappedExpandEnvironmentStrings(attr_map["path"]);
mi.execute.Param = WrappedExpandEnvironmentStrings(attr_map["param"]);
mlm.MenuItems.push_back(mi);

Expand Down Expand Up @@ -291,7 +291,6 @@ BOOL WINAPI LoadXML(LPCTSTR szFileName, MLMenu& mlm) {
}

xml_node<> *node = xml_doc.first_node();
/* declaration */
if (_strcmpi(node->first_attribute("encoding")->value(), "Shift_JIS") == 0) {
g_encoding = XML_TEXT_ENCODING::SHIFT_JIS;
} else if (_strcmpi(node->first_attribute("encoding")->value(), "UTF-8") == 0
Expand All @@ -301,9 +300,6 @@ BOOL WINAPI LoadXML(LPCTSTR szFileName, MLMenu& mlm) {
|| _strcmpi(node->first_attribute("encoding")->value(), "UTF16") == 0) {
g_encoding = XML_TEXT_ENCODING::UTF_16;
}
TCHAR buff[512];
wsprintf(buff, TEXT("%d"), g_encoding);
MessageBox(NULL, buff, TEXT("g_encoding"), MB_OK);

node = node->next_sibling();
if (_strcmpi(node->name(), "menulaunch") != 0) {
Expand All @@ -326,22 +322,15 @@ BOOL WINAPI LoadXML(LPCTSTR szFileName, MLMenu& mlm) {

return TRUE;
}
/*

BOOL WINAPI GetAttributes(xml_node<> *node, AttributeMap &attr_map) {
for (xml_attribute<> *attr = node->first_attribute(); attr; attr = attr->next_attribute()) {
std::wstring buf;
if (g_encoding == XML_TEXT_ENCODING::SHIFT_JIS) {
buf = multi_to_wide(attr->value());
} else if (g_encoding == XML_TEXT_ENCODING::UTF_8) {
buf = utf8_to_wide(attr->value());
} else if (g_encoding == XML_TEXT_ENCODING::UTF_16) {
buf = utf8_to_wide(utf16_to_utf8((char16_t *)attr->value()));
}
std::wstring buf = to_mbcs(attr->value());
attr_map.insert(std::make_pair(attr->name(), buf));
}
return TRUE;
}
*/

std::wstring WINAPI to_mbcs(std::string str) {
std::wstring dest;
if (g_encoding == XML_TEXT_ENCODING::SHIFT_JIS) {
Expand Down
4 changes: 4 additions & 0 deletions ml_xml.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@ typedef std::map<std::string, std::wstring> AttributeMap;

using namespace rapidxml;

std::wstring WINAPI multi_to_wide(std::string const& src);
std::wstring WINAPI utf8_to_wide(std::string const& src);
std::string WINAPI utf16_to_utf8(std::u16string const& src);
BOOL WINAPI StrToBOOL(LPCTSTR lpstr);
std::wstring WINAPI WrappedExpandEnvironmentStrings(const std::wstring& str);
BOOL WINAPI AppendMenuItem(HMENU hMenu, LPCTSTR lpStr, HBITMAP hBitmap, HMENU hSubmenu, UINT wID);
Expand All @@ -24,4 +27,5 @@ BOOL WINAPI LoadMenuItems(xml_node<>* node, HMENU hMenu, MLMenu& mlm);
BOOL WINAPI LoadMenu(xml_node<>* node, MLMenu& mlm);
BOOL WINAPI LoadXML(LPCTSTR szFileName, MLMenu& mlm);
BOOL WINAPI GetAttributes(xml_node<>* node, AttributeMap& attr);
std::wstring WINAPI to_mbcs(std::string str);
BOOL WINAPI LoadSettings(xml_node<>* node, MLMenu& mlm);

0 comments on commit b6b39cb

Please sign in to comment.