|
Try to use "RegAsm" command... to reg the "Flash.ocx" to the GAC. Thanks
Md. Marufuzzaman
I will not say I have failed 1000 times; I will say that I have discovered 1000 ways that can cause failure – Thomas Edison.
|
|
|
|
|
"RegAsm" is not recognized as an Internal or Extrenal Command.
|
|
|
|
|
It also will not work for Flash.OCX.
RegAsm registers .NET assemblies, not COM servers.
|
|
|
|
|
You just need to register Flash.ocx by regsvr32.exe.
RegAsm can be run from Visual Studio Command Prompt (link in Start Menu\Programs\Microsoft Visual Studio 2005\Visual Studio Tools).
|
|
|
|
|
You got that error because there are other .DLL files that Flash.ocx depends on that are not present, or not themselves, registered. Now you know why what you did, doesn't work.
|
|
|
|
|
Firstly, Thanks for all your help and quick replies.
How do I find out, which other DLL's are associated with Flash.ocx?
|
|
|
|
|
There's a utility on the web called "Dependancy Walker". You can use that to look at the dependancy chain, but you are FAR better off just using the Flash installer.
|
|
|
|
|
Yeah well, I might as well try that. Cause I just spent a horrowing 2 hours to upgrade my system, because I made some modifications to my Registry which din't go too well, looking into the advises given by some geek on another website for the error code 0x80020009. Thanks again Dave. I really appreciate it.
Now the question is, should I re-install Adobe Flash Player with the latest version again, or should I try some other software. Cause the place where the error is arising is in AxShockwaveFlash, which is just an ActiveX Control?
|
|
|
|
|
Clifford Anup wrote: should I re-install Adobe Flash Player with the latest version again,
Probably. Adobe has been busy fixing all kinds of security holes in all of their products.
Clifford Anup wrote: Cause the place where the error is arising is in AxShockwaveFlash, which is just an ActiveX Control?
To fix this, I'd start by reinstalling the lastest Flash Player, then updating the projects reference to point to the new Flash Player instead of the old one. Clean the solution, then recompile and it might just fix it.
|
|
|
|
|
Hi All,
After spending far too long trying to use the useless documentation on Equisys (online help for Zetafax), I was hoping that someone out there had a example in c# for the attaching PDF files to a zetafax message.
We have our own custom class which makes use of:-
private ZfAPIClass _zetaFax = new ZfAPIClass ();
private UserSession _userSession;
private ZfLib.NewMessage _newFaxMessage;
This has been working fine for months now, but I have a requirement to add PDF attachments to the fax message & I cannot find any help on this at all.
Any assistance would be greatly appreciated
JanetLady Programmers are a rare breed!
|
|
|
|
|
I have an app that needs to restart after an option is changed. So I'm calling Application.Restart() but there are a few places where the user can abort the close if he or she chooses to. When this happens the app doesn't close, but a new instance opens. Is there a way to detect when this happens and not start the new instance?
|
|
|
|
|
Is the existing instance able to continue reliably once the option has been changed? If so it may be better to prompt the user to choose between "Restart now" and "I'll do it myself later" rather than just forcing the restart upon them.
Once Restart has been called it does look like the the second instance can't be stopped. However you can arrange for it to shutdown without creating any windows, i.e. create a so called single instance application.
The basic code is this (well one way of doing it)
static class Program {
const String UniqueIdentifier = "{9E6F0AC4-B9A1-45QX-A8CF-72F04E6BDE8F}";
static Boolean firstInstance;
static Mutex mutex = new Mutex(true, UniqueIdentifier, out firstInstance);
[STAThread]
static void Main() {
if (firstInstance) {
Application.Run(new Form1());
} else {
MessageBox.Show("Already running");
}
}
}
The first instance creates and takes ownership of the mutex. Subsequent instances open the existing mutex and firstInstance is false.
Alan.
|
|
|
|
|
There is a problem with using a mutex and application.restart(). Sometimes the second instance will be created before all of the message loops in the existing app have had time to terminate. So it won't realiably restart.
I've been toying around with calling system.exit() and then starting up another process. Apparently you can call other code after a System.exit(). So I'll check for the exit to be aborted and if it isn't, I'll then call Application.Restart().
I'll reply to this thread if I can come up with a reliable solution.
|
|
|
|
|
Hi,
These two solutions may be applicable to your situation. In both the main form sets a flag if the user chooses to allow a restart and Application.Restart() is called just before the Main() method returns.
Method1() is mutex-less and makes the assumption that the first instance will exit before instance two 'gets going' (That's a very vague term!).
Method2() will make a second instance wait for 10 seconds and then give up if the first has not released the mutex.
static void Main() {
Method2();
}
private static void Method1() {
Form1 f = new Form1();
Application.Run(f);
if (f.RestartRequested()) {
MessageBox.Show("Click to restart");
Application.Restart();
}
}
private static void Method2() {
const String UniqueIdentifier = "{8F6F0AC4-B9A1-45fd-A8CF-72F04E6BDE8F}";
Mutex mutex;
Boolean firstInstance;
mutex = new Mutex(true, UniqueIdentifier, out firstInstance);
if (!firstInstance) {
if (!mutex.WaitOne(TimeSpan.FromSeconds(10))) {
MessageBox.Show("2nd instance did not aquire the mutex\n" +
"and cannot start");
return;
}
}
Form1 f = new Form1();
Application.Run(f);
if (f.RestartRequested()) {
Application.Restart();
MessageBox.Show("Click within 10 seconds to start the new instance");
mutex.ReleaseMutex();
}
mutex.Close();
}
Alan.modified on Thursday, March 4, 2010 7:34 PM
|
|
|
|
|
Hi!
This code Service1. Service call notepad.exe (with my form the same). In task manager on tab process I see notepad.exe. But on tab application it is not.
using System;
using System.ServiceProcess;
using System.Windows.Forms;
using System.ComponentModel;
using System.Diagnostics;
using System.IO;
using System.Drawing;
using System.Collections;
namespace InteractiveService
{
public class Service1 : System.ServiceProcess.ServiceBase
{
private System.Diagnostics.EventLog eventLog1;
private System.ComponentModel.Container components = null;
public Service1()
{
InitializeComponent();
}
static void Main()
{
System.ServiceProcess.ServiceBase[] ServicesToRun;
ServicesToRun = new System.ServiceProcess.ServiceBase[] { new Service1() };
System.ServiceProcess.ServiceBase.Run(ServicesToRun);
}
private void InitializeComponent()
{
this.eventLog1 = new System.Diagnostics.EventLog();
((System.ComponentModel.ISupportInitialize)(this.eventLog1)).BeginInit();
this.eventLog1.Log = "Application";
this.eventLog1.Source = "InteractiveService";
this.CanHandlePowerEvent = true;
this.CanHandleSessionChangeEvent = true;
this.CanPauseAndContinue = true;
this.CanShutdown = true;
this.ServiceName = "InteractiveService";
((System.ComponentModel.ISupportInitialize)(this.eventLog1)).EndInit();
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose(disposing);
}
protected override void OnStart(string[] args)
{
try
{
InteractiveService.MakeServiceInteractive();
eventLog1.WriteEntry("Service Started Succesfully");
startprc(@"C:\WINDOWS\system32\notepad.exe");
eventLog1.WriteEntry("Started Process Succesfully");
}
catch (System.Exception ex)
{
eventLog1.WriteEntry(String.Format("Service OnStart ERROR :'" + ex.Message + "'"));
}
}
protected override void OnStop()
{
eventLog1.WriteEntry("Service Stoped Succesfully");
Killprc("notepad");
}
protected override void OnContinue()
{
eventLog1.WriteEntry("Service work started after pause succesfully");
}
protected override void OnPause()
{
eventLog1.WriteEntry("Service work paused succesfully");
}
private void startprc(string prcName)
{
try
{
eventLog1.WriteEntry(String.Format("startprc :'" + prcName + "'"));
ShellLib.ShellExecute shellExecute = new ShellLib.ShellExecute();
shellExecute.Path = prcName;
shellExecute.Execute();
}
catch (System.Exception ex)
{
eventLog1.WriteEntry(String.Format("Service work start process ERROR :'" + ex.Message + "'"));
}
}
private void Killprc(string processName)
{
foreach (Process p in System.Diagnostics.Process.GetProcessesByName(processName))
{
try
{
p.Kill();
p.WaitForExit();
eventLog1.WriteEntry(String.Format("Process Kill Succesfully :'" + processName + "'"));
}
catch (InvalidOperationException invalidException)
{
eventLog1.WriteEntry(String.Format("process has already exited - might be able to let this one go, InvalidOperationException :'" + invalidException + "'"));
}
catch (System.Exception ex)
{
eventLog1.WriteEntry(String.Format("Service work start process, System.Exception :'" + ex.Message + "'"));
}
}
}
}
}
In this case, Form call notepad.exe (with my form the same). In task manager on tab process I see notepad.exe. And on tab application I see notepad.exe too.
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
namespace WinTester2
{
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.GroupBox grpLaunchApp;
private System.Windows.Forms.Button btnExploreFolder;
private System.Windows.Forms.Button btnFindInFolder;
private System.Windows.Forms.Button btnEditBmp;
private System.Windows.Forms.Button btnShowBmp;
private System.Windows.Forms.Button btnOpenExe;
private System.Windows.Forms.GroupBox grpFileOp;
private System.Windows.Forms.Button btnCopy;
private System.Windows.Forms.Button btnMove;
private System.Windows.Forms.Button btnDelete;
private System.Windows.Forms.Button btnClearList;
private System.Windows.Forms.Button btnAddFile;
private System.Windows.Forms.GroupBox grpRecentDocs;
private System.Windows.Forms.GroupBox grpPrinter;
private System.Windows.Forms.Button btnOpenPrinter;
private System.Windows.Forms.Button btnShowProperties;
private System.Windows.Forms.Button btnTestPage;
private System.ComponentModel.Container components = null;
public Form1()
{
InitializeComponent();
}
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void btnOpenExe_Click(object sender, System.EventArgs e)
{
ShellLib.ShellExecute shellExecute = new ShellLib.ShellExecute();
shellExecute.Path = @"C:\WINDOWS\system32\notepad.exe";
shellExecute.Execute();
}
}
}
I think that this is the reason that myForm is not working as it should be.
What can I run the myForm from the service, that it should appear on the tab application? Or how to make a different decision?
|
|
|
|
|
Services are not supposed to open any kind of window, that's why it fails, the main purpose of a service is to run background "formless" processes. I want to die like my grandfather- asleep, not like the passengers in his car, screaming!
|
|
|
|
|
|
Another question. How to do the visualize without form, which could run from the service? May service run the form as a background process?
|
|
|
|
|
If I set checkbox interactive desctop in my service, my form runs as aplication, but it disabled and not call form_load(). How can I get around?
|
|
|
|
|
http://www.cyberforum.ru/windows-forms/thread101334.html#post580926
|
|
|
|
|
Ask the question here. Don't post a link I know the language. I've read a book. - _Madmatt
|
|
|
|
|
Message Closed
modified 23-Nov-14 6:40am.
|
|
|
|
|
When I wish to use listBox1 in a thread gives out an error:
"Cross-thread operation not valid: Control 'listBox1' accessed from a thread other
than the thread it was created on.".
I badly understand delegates.
public delegate void ListBoxCallback(string s);
public void listBox_1_ItemsAdd(string value1)
{
ListBoxCallback callback = new ListBoxCallback(listBox_1_ItemsAdd);
Invoke(callback); // Here a problem: "parameter count mismatch"
listBox1.Items.Add(value1);
}
I transfer to a method listBox_1_ItemsAdd string value value1.
listBox_1_ItemsAdd(dataGridView1[2, i].Value.ToString());
Also, how to transfer parametre here.
private delegate void ChangeProgressBarCallback(int size);
public void changeProgressBar(int MaxSize)
{
if (progressBar1.InvokeRequired)
{
// instantiate the callback instance out of this very method
ChangeProgressBarCallback callback = new ChangeProgressBarCallback(changeProgressBar);
// invoke it, when it comes to it again InvokeRequired will be false
Invoke(callback);
}
else
{
progressBar1.Minimum = 0;
progressBar1.Maximum = MaxSize;
progressBar1.Step = 1;
for (int x = 1; x <= MaxSize; x++)
{
progressBar1.PerformStep();
}
}
}
How to transfer parametre in the delegate.
That I to do not so prompt please
|
|
|
|
|
hello,
I write to excel in my project (c#.net) and i do that white command "File.AppendAlltText(filename,string);"
this is a simple way to write file in .net .
Now i need to add color and bold word in my excel file.
i cant do that with that command or i need to use a different command?
Thank You and Good Shabec!!
|
|
|
|
|