我需要找出一个特定的环境变量(让我们说Foo)在一个Windows批处理文件中是否包含子字符串(比如说BAR).有没有办法只使用批处理文件命令和/或默认安装的程序/命令与Windows?
例如:
set Foo=Some string;something BAR something;blah
if "BAR" in %Foo% goto FoundIt <- What should this line be?
echo Did not find BAR.
exit 1
:FoundIt
echo Found BAR!
exit 0
Run Code Online (Sandbox Code Playgroud)
上面标记的行应该使这个简单的批处理文件打印"Found BAR"?
我知道如何在进程崩溃时在OS X上生成核心转储,但我真正需要做的是附加到进程,生成核心转储,然后恢复该进程(不杀死它).
很久以前(也许是一年半前)我有C代码可以做到这一点......它使用OS X内核库连接到一个进程,读取它的所有线程状态和内存,并将其写入磁盘上的Mach-O文件.这很好用(这正是我正在寻找的),但现在我似乎无法找到我的生活代码.我似乎记得代码与OS X系统内部书有一定关系,但这只是一个模糊的回忆.
有谁知道我正在谈论的代码,可以指出我吗?如果不是,是否有人知道这样做的好方法最好是一些示例代码?
编辑:这是答案.
信息:http: //osxbook.com/book/bonus/chapter8/core/
将为您完成的计划:http: //osxbook.com/book/bonus/chapter8/core/download/gcore-1.3.tar.gz
我需要知道我的窗口中插入符号当前所在的确切位置,以便我可以在文本下方弹出一个小窗口(类似于智能感知或拼写检查).问题是GetPositionFromCharIndex似乎不适用于TextBoxes.这就是我想要做的:
Point pt = mTextBox.GetPositionFromCharIndex(mTextBox.SelectionStart);
pt.Y = (int)Math.Ceiling(mTextBox.Font.GetHeight());
mListBox.Location = pt;
Run Code Online (Sandbox Code Playgroud)
但是,GetPositionFromCharIndex总是为TextBoxes返回(0,0)(显然它没有像RichTextBox那样实现).虽然这个函数(和这个代码)适用于RichTextBoxes,但我不希望将其余的代码从TextBox迁移到RichTextBox,除非是绝对的LAST度假胜地.有与RichTextBox的/文本框这么多的不兼容问题,我将不得不重新编写一个非常大的数据块的我的代码来做到这一点.
是否有任何Winforms巫师知道如何做到这一点?
在C#中,我正在尝试使用C++中的"简单"函数.问题是我在编译时不知道库的名称或位置.在C++中,这很容易:
typedef HRESULT (*SomeFuncSig)(int, IUnknown *, IUnknown **);
const char *lib = "someLib.dll"; // Calculated at runtime
HMODULE mod = LoadLibrary(lib);
SomeFuncSig func = (SomeFuncSig)GetProcAddress("MyMethod");
IUnknown *in = GetSomeParam();
IUnknown *out = NULL;
HRESULT hr = func(12345, in, &out);
// Leave module loaded to continue using foo.
Run Code Online (Sandbox Code Playgroud)
对于我的生活,我无法弄清楚如何在C#中做到这一点.我不会有任何麻烦,如果我知道DLL的名称,它看起来事情是这样的:
[DllImport("someLib.dll")]
uint MyMethod(int i,
[In, MarshalAs(UnmanagedType.Interface)] IUnknown input,
[Out, MarshalAs(UnmanagedType.Interface)] out IUnknown output);
Run Code Online (Sandbox Code Playgroud)
如果不知道我在编译时加载的DLL,我该怎么做?
我需要一个C++程序,加载CLR并在C#库中调用一个函数.我需要调用的函数将COM接口作为参数.
我的问题是,CLR托管接口似乎只允许您使用此签名调用方法:
int Foo(String arg)
Run Code Online (Sandbox Code Playgroud)
例如,这个C++代码加载CLR并在"test.exe"中运行P.Test函数:
ICLRRuntimeHost *pClrHost = NULL;
HRESULT hrCorBind = CorBindToRuntimeEx(NULL, L"wks", 0, CLSID_CLRRuntimeHost, IID_ICLRRuntimeHost, (PVOID*)&pClrHost);
HRESULT hrStart = pClrHost->Start();
DWORD retVal;
HRESULT hrExecute = pClrHost->ExecuteInDefaultAppDomain(L"C:\\Test.exe", L"P", L"Test", L"", &retVal);
Run Code Online (Sandbox Code Playgroud)
我需要做的是用这个方法签名调用一个函数(注意我拥有C#代码,所以我可以改变它):
void SomeFunction(IFoo interface)
Run Code Online (Sandbox Code Playgroud)
其中IFoo是一个com接口.如果我可以调用这样的函数,我甚至可以做我需要的东西:
IntPtr SomeFunction();
Run Code Online (Sandbox Code Playgroud)
我可以让SomeFunction构造一个正确的委托,然后使用Marshal.GetFunctionPointerForDelegate.但是,我无法弄清楚除了使用int func(string)签名调用函数之外,如何使托管接口执行任何操作.
有谁知道如何从具有不同签名的C++代码调用C#函数?
(注意我不能使用C++/CLI.我需要使用托管API.)
我需要从一个非常大,高度相互关联的数据集中读取数据,这些数据相当局限,而且读取也相当昂贵。特别:
从对问题的了解和剖析中,我相信向程序引入缓存将大有帮助。我想要做的是创建一个缓存,其中包含N个X内存块的N个块(N和X是可配置的,因此我可以对其进行调整),在必须映射另一部分内存之前,我首先要检查它。此外,缓存中存储的内容越长,我们在短期内请求该内存的可能性就越小,因此最早的数据将需要过期。
毕竟,我的问题很简单: 哪种数据结构最适合实现这种性质的缓存?
我需要非常快速的查找以查看给定地址是否在缓存中。对于缓存的每个“未命中”,我都希望使它的最旧成员过期,并添加一个新成员。但是,我计划尝试对其进行调整(通过更改缓存的数量),以使70%或更多的读取被命中。
我当前的想法是使用AVL树(用于搜索/插入/删除的LOG2 n)将是最安全的(不退化的情况)。我的另一个选择是稀疏哈希表,以便在最佳情况下查找将为O(1)。从理论上讲,它可以退化为O(n),但实际上,我可以将碰撞保持在较低水平。这里的问题是查找和删除哈希表中最旧的条目需要多长时间。
是否有人对这里最好的数据结构有什么想法或建议,为什么?
我必须在工作中处理许多多线程编程.具体来说,我想知道ARM内存模型与IA64的区别.两者都是非常弱的模型,但是我应该知道哪些具体的差异?我熟悉ia64,而不是手臂.
我正在尝试编写一个需要连接到远程数据源的Windows Phone 7应用程序,在这种情况下,它是Linux服务器上的MySQL数据库.我无法将其转移到MSSQL,也无法构建任何类型的基于Windows的解决方案(如服务器上的WCF Web服务).
有没有办法让我从我的Windows Phone 7应用程序中使用我的MySQL数据库?MySQL程序集似乎无法在手机上运行.如果没有,那么从手机上使用这个数据库的最佳解决方案是什么?
我最近重构了我的WPF代码,现在我的DispatcherTimer停止了解雇.我在这里检查了其他类似的帖子,但他们似乎都有错误的调度程序线程集的问题,我试过...
我的代码看起来像这样:
class MainWindow : Window
{
private async void GoButton_Click(object sender, RoutedEventArgs e)
{
Hide();
m_files = new CopyFilesWindow();
m_files.Show();
m_dispatcherTimer = new DispatcherTimer();
m_dispatcherTimer.Tick += dispatcherTimer_Tick;
m_dispatcherTimer.Interval = new TimeSpan(0, 0, 0, 0, 250);
m_dispatcherTimer.Start();
await SomeLongRunningTask();
m_files.Hide();
Show();
}
Run Code Online (Sandbox Code Playgroud)
(当前类是我的主要Window对象,我在文件复制期间隐藏它.CopyFilesWindow是一个简单的Xaml窗口,其中包含我修改的控件... CopyFilesWindow本身绝对没有.)
基本上,我等待一个长时间运行的任务(复制一堆大文件),我的DispatcherTimer应该更新dispatcherTimer_Tick中的进度.但是,我在该函数上设置了一个断点,它没有被击中.
我也尝试使用构造函数设置Dispatcher,如下所示:
m_dispatcherTimer = new DispatcherTimer(DispatcherPriority.Normal, m_files.Dispatcher);
m_dispatcherTimer = new DispatcherTimer(DispatcherPriority.Normal, this.Dispatcher);
Run Code Online (Sandbox Code Playgroud)
但这些都不会改变这种行为......它仍然不会触发.
我在这做错了什么?
有没有什么好方法(除了安装 WireShark)将原始 http 请求数据发送到网络服务器?我怀疑我发送的请求不正确或格式错误,但我不知道如何通过调用 WebClient.UploadValues 获取发送到网络服务器的原始请求字符串。