Это на самом деле связано с c ++ - cx, и я нацеливаю этот тег на вашу проблему.
Чтобы упростить навигацию, мы можем использовать систему тегов в нашем приложении. Смотрите следующий код:
<NavigationView x:Name="NavigationViewControl" ItemInvoked="NavigationViewControl_ItemInvoked" >
<NavigationView.MenuItems>
<NavigationViewItem Content="A" x:Name="A" Tag="tga" />
<NavigationViewItem Content="B" x:Name="B" Tag="tgb"/>
<NavigationViewItem Content="C" x:Name="C" />
</NavigationView.MenuItems>
<Frame x:Name="contentFrame"/>
</NavigationView>
Это пример, мы добавим теги к нашим элементам. Затем мы сделаем следующее в нашем коде вызова:
void NavigationVWCX::MainPage::NavigationViewControl_ItemInvoked(Windows::UI::Xaml::Controls::NavigationView^ sender, Windows::UI::Xaml::Controls::NavigationViewItemInvokedEventArgs^ args)
{
auto navitemtag = args->InvokedItemContainer->Tag->ToString();
if (navitemtag == "tga")
{
contentFrame->Navigate(Windows::UI::Xaml::Interop::TypeName(PageA::typeid));
}
if (navitemtag == "tgb")
{
contentFrame->Navigate(Windows::UI::Xaml::Interop::TypeName(PageB::typeid));
}
}
Кстати, не забудьте также добавить тег на свои страницы, например:
PageB::PageB()
{
InitializeComponent();
this->Tag = "tgb";
}
Вот пример того, как получить идентификатор родительского процесса и название текущего под управлением сценария. Как предложено Tomalak это может использоваться, чтобы обнаружить, если сценарий был запущен с командной строки или путем двойного щелчка в проводнике.
import win32pdh
import os
def getPIDInfo():
"""
Return a dictionary with keys the PID of all running processes.
The values are dictionaries with the following key-value pairs:
- name: <Name of the process PID>
- parent_id: <PID of this process parent>
"""
# get the names and occurences of all running process names
items, instances = win32pdh.EnumObjectItems(None, None, 'Process', win32pdh.PERF_DETAIL_WIZARD)
instance_dict = {}
for instance in instances:
instance_dict[instance] = instance_dict.get(instance, 0) + 1
# define the info to obtain
counter_items = ['ID Process', 'Creating Process ID']
# output dict
pid_dict = {}
# loop over each program (multiple instances might be running)
for instance, max_instances in instance_dict.items():
for inum in xrange(max_instances):
# define the counters for the query
hq = win32pdh.OpenQuery()
hcs = {}
for item in counter_items:
path = win32pdh.MakeCounterPath((None,'Process',instance, None,inum,item))
hcs[item] = win32pdh.AddCounter(hq,path)
win32pdh.CollectQueryData(hq)
# store the values in a temporary dict
hc_dict = {}
for item, hc in hcs.items():
type,val=win32pdh.GetFormattedCounterValue(hc,win32pdh.PDH_FMT_LONG)
hc_dict[item] = val
win32pdh.RemoveCounter(hc)
win32pdh.CloseQuery(hq)
# obtain the pid and ppid of the current instance
# and store it in the output dict
pid, ppid = (hc_dict[item] for item in counter_items)
pid_dict[pid] = {'name': instance, 'parent_id': ppid}
return pid_dict
def getParentInfo(pid):
"""
Returns a PID, Name tuple of the parent process for the argument pid process.
"""
pid_info = getPIDInfo()
ppid = pid_info[pid]['parent_id']
return ppid, pid_info[ppid]['name']
if __name__ == "__main__":
"""
Print the current PID and information of the parent process.
"""
pid = os.getpid()
ppid, ppname = getParentInfo(pid)
print "This PID: %s. Parent PID: %s, Parent process name: %s" % (pid, ppid, ppname)
dummy = raw_input()
Когда выполнено от командной строки это производит:
Этот PID: 148. Родительский PID: 4660, имя Родительского процесса: cmd
При запуске путем двойного щелчка в проводнике это производит:
Этот PID: 1896. Родительский PID: 3788, имя Родительского процесса: проводник
Командная строка запустилась, сценарию назвали родительский процесс cmd.exe
(или несуществующий процесс, в случае, если консоль была закрыта тем временем).
Запущенному с двойного щелчка сценарию нужно назвать родительский процесс explorer.exe
.
Хороший вопрос. Одна вещь, которую Вы могли сделать, создают ярлык на сценарий в Windows и передают аргументы (использующий свойство Target ярлыка), который обозначил бы, что сценарий был запущен путем двойного щелчка (в этом случае, ярлык).