我试图在Winforms应用程序中更改WebBrowser控件的UserAgent.
我已成功使用以下代码实现此目的:
[DllImport("urlmon.dll", CharSet = CharSet.Ansi)]
private static extern int UrlMkSetSessionOption(
int dwOption, string pBuffer, int dwBufferLength, int dwReserved);
const int URLMON_OPTION_USERAGENT = 0x10000001;
public void ChangeUserAgent()
{
List<string> userAgent = new List<string>();
string ua = "Googlebot/2.1 (+http://www.google.com/bot.html)";
UrlMkSetSessionOption(URLMON_OPTION_USERAGENT, ua, ua.Length, 0);
}
Run Code Online (Sandbox Code Playgroud)
唯一的问题是这只能工作一次.当我尝试第二次运行ChangeUserAgent()方法时,它不起作用.它保持设置为第一个更改的值.这很烦人,我已经尝试了一切,但它不会改变不止一次.
有谁知道一种不同的,更灵活的方法?
谢谢
我正在AngularJS中进行验证,如果有3种类型的错误,我会显示一个div.
对于required,我只想在页面以空值提交时显示错误消息
<div class="error" data-ng-show="submitted && mainForm.email.$error.required" />
Run Code Online (Sandbox Code Playgroud)
对于正则表达式验证,我希望它标记实时的默认行为.
<div class="error" data-ng-show="mainForm.email.$error.pattern" />
Run Code Online (Sandbox Code Playgroud)
我面临的问题是minlength.我不想在打字时显示它.这很烦人,因为他们还没有完成打字.我也不想在提交时显示它,我认为为时已晚.当它们不再是元素的焦点时,我想展示它.
如果//mainForm.email.$focus存在,我可以简单地这样做
<div class="error" data-ng-show="mainForm.email.$error.minlength &&
!mainForm.email.$focus"/>
Run Code Online (Sandbox Code Playgroud)
有人知道有什么方法可以做这种检查或任何非抽出的替代方案吗?
谢谢!
我正在使用C#编写的windows.form应用程序上的Webbrowser控件.我想写一个方法,在访问某个站点后从Webbrowers控件中删除cookie.不幸的是,我不知道该如何做到这一点,并没有在互联网上找到很多帮助.
如果有人有实际经验,不仅仅是假设,因为它可能比看起来更棘手,我不知道.
int count = webBrowser2.Document.Cookie.Length;
webBrowser2.Document.Cookie.Remove(0,count);
Run Code Online (Sandbox Code Playgroud)
我只是假设上面的代码可以工作,但我想它不会.任何人都可以对这整个饼干有所了解吗?
我有一个Dockerfile,我想使用默认值配置API.
来自socialengine/nginx-spa
ENV API_URL localhost:6007
因此,当我运行此图像时,我将能够使用以下内容覆盖localhost:6007:
docker run -e API_URL = production.com:6007 ui
这不起作用,我找不到如何做到这一点的明确解释.
有什么建议?
我以前做过这个,我不记得我是从网上下载了DLL还是其他东西,但我不想得病毒.我需要访问此命名空间,以便我可以拥有Webbrowswer控件不提供的额外功能.
如何准确添加Com引用.或者我是否需要来自某个地方的dll
谢谢
我有以下API:
我想使用NGINX将它们全部运行在以下位置:
本地主机:443/API /
这似乎非常困难,因为客户跨越两台服务器.
这是我从订单开始的失败尝试
server {
listen 443;
server_name localhost;
location /api/orders {
proxy_pass https://localhost:500/api/orders;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
server {
listen 443;
server_name localhost;
location /api/customers/$id/billing {
proxy_pass https://localhost:400/api/customers/$id/billing;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
server {
listen 443;
server_name localhost;
location /api/customers {
proxy_pass https://localhost:300/api/customers;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
Run Code Online (Sandbox Code Playgroud)
什么东西跳出来修复?谢谢!
我正在为 mongo 文档创建架构,除了防止非对象数组中的重复项外,我可以做任何事情。
我知道 addToSet,但我指的是 Mongo Schema。
我不想使用 $addToSet 检查更新,而是希望这成为我的架构验证的一部分。
下面举例。
let sampleSchema = {
name: { type: 'String', unique: true },
tags: [{ type: 'String', unique: true }]
}
Run Code Online (Sandbox Code Playgroud)
上面的代码段防止 name 具有重复的值。它允许将标签存储为字符串数组。
但是..我不能将数组限制为唯一的字符串。
{ name: 'fail scenario', tags: ['bad', 'bad', 'array']}
Run Code Online (Sandbox Code Playgroud)
我能够插入这条记录,这应该是一个失败的场景。
我想知道是否可以与我的程序中的其他程序进行交互.例如,单击另一个程序等上的按钮等.我不确定这是否可能,但如果有人可以在C#中提供一些示例代码.
谢谢
好吧,我在 .NET Framework 的 WebBroswer 控件中有一个弹出窗口,我使用 NewWindow 事件处理程序像这样捕获它。
WebBrowser w = new WebBrowser();
SHDocVw.WebBrowser_V1 web = (SHDocVw.WebBrowser_V1)w.ActiveXInstance;
web.NewWindow += new SHDocVw.DWebBrowserEvents_NewWindowEventHandler(web_NewWindow);
Run Code Online (Sandbox Code Playgroud)
新的 Popup 是一个带有 WebBrowser 控件的新实例的新表单。
void web_NewWindow(string URL, int Flags, string TargetFrameName, ref object PostData, string Headers, ref bool Processed)
{
Processed = true;
WebBrowser w2 = new WebBrowser();
Form PopUp = new Form();
PopUp.Controls.Clear();
PopUp.Controls.Add(w2);
w2.Dock = DockStyle.Fill;
PopUp.Show();
w2.Navigate(URL);
w2.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(w2_DocumentCompleted);
}
Run Code Online (Sandbox Code Playgroud)
我的问题是 Window.Opener 对象在此过程中为空。
该页面使用该字段将用户返回到原始窗口并在表单上填写一些值。
反正有没有将 Window.Opener 对象从一个 WebBrowser 控件传递到下一个?这似乎不可能,但我必须尝试。
谢谢
我想制作3个线程,每个线程运行WebBroswer控件.所以我想使用ThreadPool让事情变得简单.
for(int i = 0;i < 3;i++)
{
ThreadPool.QueueUserWorkItem(new WaitCallback(gotoWork), i));
}
WaitAll(waitHandles);
Run Code Online (Sandbox Code Playgroud)
....../
void gotoWork(object o)
{
string url = String.Empty;
int num = (int)o;
switch(num)
{
case 0:
url = "google.com";
break;
case 1:
url = "yahoo.com";
break;
case 2:
url = "bing.com";
break;
}
WebBrowser w = new WebBrower();
w.Navigate(url);
}
Run Code Online (Sandbox Code Playgroud)
但是我得到一个错误,说我需要一个ThreadPool永远不会的STA线程.在尝试这种方法之前,我试过这个.
Thread[] threads = Thread[3];
for(int i = 0;i < 3;i++)
{
threads[i] = new Thread(new ParameterizedStart(gotoWork);
threads[i] = SetApartmentState(ApartmentState.STA); //whoo hoo
threads[i] = Start();
} …
Run Code Online (Sandbox Code Playgroud)