在发布之前,我进入了项目 - >属性 - >选项 - >文件关联,并添加了扩展名".hsp".设置一个图标和一个ProgID("MyCompany.Document.1"用于测试).在我发布和安装之后,我的.hsp文件有我设置的图标,因此应该正确设置文件关联,但是当我双击其中一个文件时应用程序运行,我希望我双击的文件的名称是在命令行中.我试着读取传递给我的Main函数的参数,尝试过Environment.CommandLine并试过Environment.GetCommandLineArgs(),但我发现的唯一的东西就是应用程序路径.顺便说一句,在我在Main函数中创建主窗体之前,我正在进行所有这些检查,只是为了测试.该args参数是空的,另两个仅包含我的应用程序路径.
这是我的Main功能的开始:
static void Main(string[] args)
{
try
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.ThreadException += new ThreadExceptionEventHandler(Application_ThreadException);
MessageBox.Show("CommandLine -> " + Environment.CommandLine);
foreach (string str in args) MessageBox.Show("args -> " + str);
foreach (string str in Environment.GetCommandLineArgs()) MessageBox.Show("GetCommandLineArgs -> " + str);
Run Code Online (Sandbox Code Playgroud) 当我创建一个窗体时,自动生成的代码不包括覆盖的Dispose方法.这是否意味着没有为表单中的所有控件调用Dispose?
注意:
下面的答案反映了2009年遗留浏览器的状态.现在,您可以在2017年使用JavaScript动态/编程地设置文件输入元素的值.
有关详细信息和演示,请参阅此问题中的答案:
如何以编程方式设置文件输入值(即:拖放文件时)?
我需要做的是以编程方式从使用.NET的应用程序的javascript代码向服务发送POST请求,该.NET WebBrowser基本上是嵌入式Internet Explorer.此服务要求其中一个字段为"文件".
所以,有没有办法在表单中设置"文件"输入的值,因为我有文件的内容,例如在一个字节数组中(而不是文件的路径;我是不试图从用户窃取文件:)).
或者也许是一种显式创建和发送POST请求而不是动态创建FORM的方法?
我需要使用将在我的WebBrowser(想想IE)中运行的JavaScript代码.这可能吗?
我BackgroundWorker通过WebClient.DownloadString在循环内调用来使用a 来下载一些网站.我希望用户在下载内容时取消选项,所以CancelAsync每当我发现CancellationPending在循环中间打开时我都会打电话.
但是现在我注意到函数DownloadString有时会冻结,所以我决定使用DownloadStringAsync(所有这些都在创建的其他线程中BackgroundWorker).因为我不想通过在调用之后退出循环和函数来重写我的整个代码,所以在调用DownloadStringAsync之后我做了一个while循环,它什么也没做,只是检查一个变量bool Stop,我在DownloadStringCompleted事件处理程序时变为true 被叫或当用户请求取消操作时.
现在,奇怪的是它在调试版本上运行良好; 但是在第一个版本中,程序会在while循环中冻结,就好像它是主线程一样.
我一直在研究这些东西,每个人似乎都同意解决方案是检查ReadyStateWeb浏览器,直到设置为Complete.
但事实上,有时会将事件触发ReadyState多次设置为完成.
我不认为有一个蹩脚的.NET WebBrowser的解决方案,但如果我使用底层DOM组件可能会有一个.
唯一的问题是,我不知道如何访问触发DocumentCompleted事件的WebBrowser后面的DOM组件.
我使用的是VS 2010 Ultimate.
我试图通过右键单击以"shdocvw.dll中"添加到我的项目的引用参考文献- >添加引用...,然后单击浏览并导航到"C:\ WINDOWS\SYSTEM32\shdocvw.dll中",但是当我点击在添加按钮没有任何反应都没有.对话框甚至没有关闭.
知道我能做错什么吗?
我尝试重启VS但仍然遇到这个问题.
在Android Studio中,您可以使用以下按钮"运行"或"调试"您的应用程序:
此外,您可以在Build Variants窗口中选择调试版本或发布版本变量:
按"调试"按钮和选择调试版本,或按"运行"按钮并选择版本变体有什么区别?如果我调试调试或发布版本会有什么不同吗?
我希望能够像初始化字符串一样初始化类:
string str = "hello";
MyClass class = "hello";
Run Code Online (Sandbox Code Playgroud)
我真的不知道到底是string str = "hello";做什么的.我假设"hello"被编译器翻译成了new System.String("hello");但我不确定.也许是不可能的,也许我错过了一些非常元素的东西; 如果是这样的话可以原谅我的无知:).我想要做的是一个类似字符串的类,但自动将字符串存储在文件中.
好的,这是读完答案后的代码:
class StringOnFile
{
private static string Extension = ".htm";
private string _FullPath;
public bool Preserve = false;
public string FullPath
{
get
{
return _FullPath;
}
}
public static implicit operator StringOnFile(string value)
{
StringOnFile This = new StringOnFile();
int path = 0;
do{
path++;
This._FullPath = Path.GetFullPath(path.ToString() + Extension);
}
while(File.Exists(This._FullPath));
using (StreamWriter sw = File.CreateText(This._FullPath))
{ …Run Code Online (Sandbox Code Playgroud) 我有一个.NET应用程序需要使用a WebBrowser来自动浏览一堆页面.但是,如果我去谷歌并设置谷歌即时通讯,然后搜索任何内容并手动浏览下一个按钮几次,我的应用程序使用的内存将开始增加.
问题可能是Google Instant以某种方式保留了以前页面中的数据,但即使我在其他地方导航,例如"about:blank",使用的内存也不会减少.IE 9也会出现这个问题.我开始写下我在第60页使用的内存,这就是我得到的(使用IE 9):
Page 60: 180 MB
Page 70: 214 MB
Page 80: 245 MB
Page 90: 280 MB
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,内存几乎每10页增加30 - 35 MB.如果在我离开谷歌后将释放内存,这将不会成为问题.但事实并非如此.
我也试过这个并没有做任何事情.
编辑:我做了一个项目只是为了测试这个.这是我的Form1代码:
namespace WebBrowserMemoryTest
{
public partial class Form1 : Form
{
private int _Pages;
public Form1()
{
InitializeComponent();
webBrowser1.Navigate("http://www.google.com");
}
private void startButton_Click(object sender, EventArgs e)
{
_Pages = 0;
timer1.Start();
}
private void stopButton_Click(object sender, EventArgs e)
{
timer1.Stop();
}
private void timer1_Tick(object sender, EventArgs e) …Run Code Online (Sandbox Code Playgroud) 是否可以读取当前运行的ClickOnce应用程序(Project Properties -> Publish -> Options -> Publisher name在Visual Studio中设置的应用程序)的发布者名称?
为什么我需要它的原因是作为描述的运行当前运行的应用程序的另一个实例此文章,向它传递参数.
当然我知道我的应用程序的发布者名称,但是如果我硬编码,稍后我决定更改我的发布者名称,我很可能会忘记更新这段代码.